建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

WordPress页面和幻灯片Slider之间的关系(WordPress实现的首页幻灯片展示功能示例)

GG网络技术分享 2025-03-18 16:14 0


WordPress页面和幻灯片Slider之间的关系

大家好,这个分享一下“WordPress页面”和“幻灯片Slider”之间的关系。默认情况下,这两个东西没有任何关系。WordPress页面功能单一,幻灯片Slider是单独的插件,它们之间并不关联。但是安装了安装主题之后,页面和幻灯片就会产生关联。

以Avada主题为例。这个主题支持四种幻灯片(如下图)。Avada主题自带两种幻灯片。还集成了两个商业幻灯片,分别是Slider Revolution 和Layer Slicer,这两个都是(付费)插件。

以Slider Revolution插件为例(如下图),在Slider Revolution插件里可以创建多个幻灯片(组图),每个幻灯片(组图)都有个唯一的名字(这个很重要),每个幻灯片里面包含多张图片、或者多个场景,不同的场景之间循环播放,每个场景都有独立的背景图和前台文字。

本课时完整版内容收录在《WordPress主题公共课》教程中

WordPress实现的首页幻灯片展示功能示例

对于WordPress拓展性这么优秀的程序来说,是没有什么不能实现的。很多在建站的时候,都会选择在首页使用幻灯片,可以展示比较醒目的内容。今天就来一个首页幻灯片的制作教程,相信幻灯片在各种企业包括个人网站上面用处还是很大的,做完之后效果和本站首页的一样。

主要是使用了WordPress的自定义文章字段的功能来判断是否需要显示在首页:

1.创建Post Meta Box

/* Fire our meta box setup function on the post editor screen. */
add_action( \'load-post.php\', \'sola_post_meta_boxes_setup\' );
add_action( \'load-post-new.php\', \'sola_post_meta_boxes_setup\' );
/* 这是需要修改的两处之一,本功能只需要一个checkbox,将checkbox的title、id等属性填充到$fields数组中,
后面的代码会自动根据数组填充的内容创建Post Meta Box */
$fields = array(
array(
\'name\' => __(\'是否在首页幻灯显示\'),
\'desc\' => \'Check this box and make the post a slider\',
\'id\' => \'sola-post-slider\',
\'type\' => \'checkbox\',
\'default\' => \'\'
)
);
/* Meta box setup function. */
function sola_post_meta_boxes_setup() {
/* Add meta boxes on the \'add_meta_boxes\' hook. */
add_action( \'add_meta_boxes\', \'sola_add_post_meta_boxes\' );
add_action( \'save_post\', \'sola_save_post_meta_boxes\', 10, 2 );
}
/* Create one or more meta boxes to be displayed on the post editor screen. */
/* 这里也需要改一下,设置需要创建的Post Meta Box叫什么名字,显示在什么位置 */
function sola_add_post_meta_boxes() {
add_meta_box(
\'sola-post-slider-class\', // Unique ID
__(\'首页幻灯片\'), // Title
\'sola_seo_box_format\', // Callback function
\'post\', // Admin page (or post type)
\'side\', // Context
\'default\' // Priority
);
}
function sola_seo_box_format(){
global $fields,$post;
// Use nonce for verification
echo \'<input type=\"hidden\" name=\"sola_meta_box_nonce\" value=\"\', wp_create_nonce(basename(__FILE__)), \'\" />\';
echo \'<table class=\"form-table\">\';
foreach ($fields as $field) {
// get current post meta data
$meta = get_post_meta($post->ID, $field[\'id\'], true);
echo \'<tr>\'.
\'<th><label for=\"\'. $field[\'id\'] .\'\">\'. $field[\'name\']. \'</strong></label></th>\'.
\'<td>\';
switch ($field[\'type\']) {
case \'text\':
echo \'<input type=\"text\" name=\"\'. $field[\'id\']. \'\" id=\"\'. $field[\'id\'] .\'\" value=\"\'. ($meta ? $meta : $field[\'default\']) . \'\" size=\"30\" style=\"width:97%\" />\'. \'
\'. $field[\'desc\'];
break;
case \'textarea\':
echo \'<textarea name=\"\'. $field[\'id\']. \'\" id=\"\'. $field[\'id\']. \'\" cols=\"60\" rows=\"4\" style=\"width:97%\">\'. ($meta ? $meta : $field[\'default\']) . \'\'. \'
\'. $field[\'desc\'];
break;
case \'select\':
echo \'<select name=\"\'. $field[\'id\'] . \'\" id=\"\'. $field[\'id\'] . \'\">\';
foreach ($field[\'options\'] as $option) {
echo \'<option \'. ( $meta == $option ? \' selected=\"selected\"\' : \'\' ) . \'>\'. $option . \'</option>\';
}
echo \'</select>\';
break;
case \'radio\':
foreach ($field[\'options\'] as $option) {
echo \'<input type=\"radio\" name=\"\' . $field[\'id\'] . \'\" value=\"\' . $option[\'value\'] . \'\"\' . ( $meta == $option[\'value\'] ? \' checked=\"checked\"\' : \'\' ) . \' />\' . $option[\'name\'];
}
break;
case \'checkbox\':
echo \'<input type=\"checkbox\" name=\"\' . $field[\'id\'] . \'\" id=\"\' . $field[\'id\'] . \'\"\' . ( $meta ? \' checked=\"checked\"\' : \'\' ) . \' />\';
break;
}
echo \'<td>\'.\'</tr>\';
}
echo \'</table>\';
}
function sola_save_post_meta_boxes($post_id) {
global $fields, $post;
//Verify nonce
if (!wp_verify_nonce($_POST[\'sola_meta_box_nonce\'], basename(__FILE__))) {
return $post_id;
}
//Check autosave
if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
return $post_id;
}
//Get the post type object.
$post_type = get_post_type_object( $post->post_type );
//Check permissions
if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
return $post_id;
foreach ($fields as $field) {
$old = get_post_meta($post_id, $field[\'id\'], true);
$new = $_POST[$field[\'id\']];
if ($new && $new != $old) {
update_post_meta($post_id, $field[\'id\'], $new);
} elseif (\'\' == $new && $old) {
delete_post_meta($post_id, $field[\'id\'], $old);
}
}
}

这段代码会在文章创建和编辑页面创建如下所示的Post Meta Box :WordPress实现的首页幻灯片展示功能示例 (https://www.wpmee.com/) WordPress使用教程 第1张

写文章时,勾选在首页显示幻灯片,这篇文章就会自动推送到首页幻灯片中。

2.读取幻灯片文章

接下来修改slider.php,使用post meta box实现,就需要根据post的meta信息搜索幻灯片,代码如下

$args = array(
\'posts_per_page\'   => 4,
\'meta_key\' => \'sola-post-slider\',
\'meta_value\' => \'on\',
);
query_posts($args);

用get_posts()和meta_query参数结合,就可以达到目的,有了数据,直接循环输出就行

希望本文所述对大家基于wordpress的程序设计有所帮助。

WordPress实现的首页幻灯片展示功能示例 (https://www.wpmee.com/) WordPress使用教程 第2张

标签:

提交需求或反馈

Demand feedback