星落银河 發表於 2023-12-22 00:00:00

WordPress实现的首页幻灯片展示功能示例【附demo源码】

<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
本文实例讲述了WordPress实现的首页幻灯片展示功能。分享给大家供大家参考,具体如下:</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
对于WordPress拓展性这么优秀的程序来说,是没有什么不能实现的。很多在建站的时候,都会选择在首页使用幻灯片,可以展示比较醒目的内容。今天就来一个首页幻灯片的制作教程,相信幻灯片在各种企业包括个人网站上面用处还是很大的,做完之后效果和本站首页的一样。</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
主要是使用了WordPress的自定义文章字段的功能来判断是否需要显示在首页:</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
<strong>1.创建Post Meta Box</strong><br>
 </p>
<div style='margin: 3px auto 0px; padding: 0px 3px; outline: none; line-height: 21.6px; clear: both; border-width: 1px; border-style: solid; border-color: rgb(0, 153, 204); background: rgb(246, 251, 255); overflow: hidden; font-family: tahoma, arial, "Microsoft YaHei";'>
<div style="margin: 0px; padding: 0px; outline: none; float: right; line-height: 25.2px; font-size: 14px;">
<span style="line-height: 25.2px; cursor: pointer;"><u>复制代码</u></span>
</div>
代码如下:</div>
<div id="phpcode2" style='margin: 0px auto 3px; padding: 0px 3px; outline: none; line-height: 25.2px; font-size: 14px; clear: both; border-right: 1px solid rgb(0, 153, 204); background: rgb(221, 237, 251); overflow: hidden; border-left: 1px solid rgb(0, 153, 204); word-break: break-all; border-bottom: 1px solid rgb(0, 153, 204); word-wrap: break-word; font-family: tahoma, arial, "Microsoft YaHei";'>
/* Fire our meta box setup function on the post editor screen. */<br>
add_action( 'load-post.php', 'sola_post_meta_boxes_setup' );<br>
add_action( 'load-post-new.php', 'sola_post_meta_boxes_setup' );<br>
/* 这是需要修改的两处之一,本功能只需要一个checkbox,将checkbox的title、id等属性填充到$fields数组中,<br>
后面的代码会自动根据数组填充的内容创建Post Meta Box */<br>
$fields = array(<br>
array(<br>
'name' =&gt; __('是否在首页幻灯显示'),<br>
'desc' =&gt; 'Check this box and make the post a slider',<br>
'id' =&gt; 'sola-post-slider',<br>
'type' =&gt; 'checkbox',<br>
'default' =&gt; ''<br>
)<br>
);<br>
/* Meta box setup function. */<br>
function sola_post_meta_boxes_setup() {<br>
/* Add meta boxes on the 'add_meta_boxes' hook. */<br>
add_action( 'add_meta_boxes', 'sola_add_post_meta_boxes' );<br>
add_action( 'save_post', 'sola_save_post_meta_boxes', 10, 2 );<br>
}<br>
/* Create one or more meta boxes to be displayed on the post editor screen. */<br>
/* 这里也需要改一下,设置需要创建的Post Meta Box叫什么名字,显示在什么位置 */<br>
function sola_add_post_meta_boxes() {<br>
add_meta_box(<br>
'sola-post-slider-class', // Unique ID<br>
__('首页幻灯片'), // Title<br>
'sola_seo_box_format', // Callback function<br>
'post', // Admin page (or post type)<br>
'side', // Context<br>
'default' // Priority<br>
);<br>
}<br>
function sola_seo_box_format(){<br>
global $fields,$post;<br>
// Use nonce for verification<br>
echo '&lt;input type="hidden" name="sola_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" /&gt;';<br>
echo '&lt;table&gt;';<br>
foreach ($fields as $field) {<br>
// get current post meta data<br>
$meta = get_post_meta($post-&gt;ID, $field['id'], true);<br>
echo '&lt;tr&gt;'.<br>
'&lt;th&gt;&lt;label for="'. $field['id'] .'"&gt;'. $field['name']. '&lt;/strong&gt;&lt;/label&gt;&lt;/th&gt;'.<br>
'&lt;td&gt;';<br>
switch ($field['type']) {<br>
case 'text':<br>
echo '&lt;input type="text" name="'. $field['id']. '" id="'. $field['id'] .'" value="'. ($meta ? $meta : $field['default']) . '" size="30" style="width:97%" /&gt;'. '<br>
'. $field['desc'];<br>
break;<br>
case 'textarea':<br>
echo '&lt;textarea name="'. $field['id']. '" id="'. $field['id']. '" cols="60" rows="4" style="width:97%"&gt;'. ($meta ? $meta : $field['default']) . ''. '<br>
'. $field['desc'];<br>
break;<br>
case 'select':<br>
echo '&lt;select name="'. $field['id'] . '" id="'. $field['id'] . '"&gt;';<br>
foreach ($field['options'] as $option) {<br>
echo '&lt;option '. ( $meta == $option ? ' selected="selected"' : '' ) . '&gt;'. $option . '&lt;/option&gt;';<br>
}<br>
echo '&lt;/select&gt;';<br>
break;<br>
case 'radio':<br>
foreach ($field['options'] as $option) {<br>
echo '&lt;input type="radio" name="' . $field['id'] . '" value="' . $option['value'] . '"' . ( $meta == $option['value'] ? ' checked="checked"' : '' ) . ' /&gt;' . $option['name'];<br>
}<br>
break;<br>
case 'checkbox':<br>
echo '&lt;input type="checkbox" name="' . $field['id'] . '" id="' . $field['id'] . '"' . ( $meta ? ' checked="checked"' : '' ) . ' /&gt;';<br>
break;<br>
}<br>
echo '&lt;td&gt;'.'&lt;/tr&gt;';<br>
}<br>
echo '&lt;/table&gt;';<br>
}<br>
function sola_save_post_meta_boxes($post_id) {<br>
global $fields, $post;<br>
//Verify nonce<br>
if (!wp_verify_nonce($_POST['sola_meta_box_nonce'], basename(__FILE__))) {<br>
return $post_id;<br>
}<br>
//Check autosave<br>
if (defined('DOING_AUTOSAVE') &amp;&amp; DOING_AUTOSAVE) {<br>
return $post_id;<br>
}<br>
//Get the post type object.<br>
$post_type = get_post_type_object( $post-&gt;post_type );<br>
//Check permissions<br>
if ( !current_user_can( $post_type-&gt;cap-&gt;edit_post, $post_id ) )<br>
return $post_id;<br>
foreach ($fields as $field) {<br>
$old = get_post_meta($post_id, $field['id'], true);<br>
$new = $_POST[$field['id']];<br>
if ($new &amp;&amp; $new != $old) {<br>
update_post_meta($post_id, $field['id'], $new);<br>
} elseif ('' == $new &amp;&amp; $old) {<br>
delete_post_meta($post_id, $field['id'], $old);<br>
}<br>
}<br>
}</div>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
 </p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
这段代码会在文章创建和编辑页面创建如下所示的Post Meta Box :</p>
<img title="WordPress实现的首页幻灯片展示功能示例【附demo源码】" alt="WordPress实现的首页幻灯片展示功能示例【附demo源码】" src="https://zhuji.jb51.net/uploads/img/202305/4cbebf5fffddf397394669a56606f729.jpg" style="max-width:100%!important;height:auto!important;border: 1px solid rgb(204, 204, 204); vertical-align: middle; padding: 1px; overflow: hidden; max-width: 696px; font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px; width: 300px; height: 139px;'><p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
写文章时,勾选在首页显示幻灯片,这篇文章就会自动推送到首页幻灯片中。</p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
<strong>2.读取幻灯片文章</strong></p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
接下来修改slider.php,使用post meta box实现,就需要根据post的meta信息搜索幻灯片,代码如下<br>
 </p>
<div style='margin: 3px auto 0px; padding: 0px 3px; outline: none; line-height: 21.6px; clear: both; border-width: 1px; border-style: solid; border-color: rgb(0, 153, 204); background: rgb(246, 251, 255); overflow: hidden; font-family: tahoma, arial, "Microsoft YaHei";'>
<div style="margin: 0px; padding: 0px; outline: none; float: right; line-height: 25.2px; font-size: 14px;">
<span style="line-height: 25.2px; cursor: pointer;"><u>复制代码</u></span>
</div>
代码如下:</div>
<div id="phpcode3" style='margin: 0px auto 3px; padding: 0px 3px; outline: none; line-height: 25.2px; font-size: 14px; clear: both; border-right: 1px solid rgb(0, 153, 204); background: rgb(221, 237, 251); overflow: hidden; border-left: 1px solid rgb(0, 153, 204); word-break: break-all; border-bottom: 1px solid rgb(0, 153, 204); word-wrap: break-word; font-family: tahoma, arial, "Microsoft YaHei";'>
$args = array(<br>
'posts_per_page' =&gt; 4,<br>
'meta_key' =&gt; 'sola-post-slider',<br>
'meta_value' =&gt; 'on',<br>
);<br>
query_posts($args);</div>
<br style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'><span style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>用get_posts()和meta_query参数结合,就可以达到目的,有了数据,直接循环输出就行</span>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
 </p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
<strong>3.源代码点击此处</strong><strong><font color="#ff0000" style="line-height: 25.2px;">本站下载</font></strong></p>
<p style='margin: 0px; padding: 5px 0px; outline: none; font-size: 14px; line-height: 30px; font-family: tahoma, arial, "Microsoft YaHei";'>
希望本文所述对大家基于wordpress的程序设计有所帮助。</p>
頁: [1]
查看完整版本: WordPress实现的首页幻灯片展示功能示例【附demo源码】