我正在运行一个Wordpress网站和我安装的主题,它附带一个nivoSlider,显示在主页上。现在,我可以通过登录WP Dashboard并导航到Theme Options面板来选择要在主页上显示的滑块。从那里,我可以在主页上从下拉列表中选择要显示的滑块(当我创建更多滑块时,列表会继续填充)。这是在主题选项面板中回显“滑块”部分的代码:
//------------------------------------------------------------------------------
// SLIDER
//------------------------------------------------------------------------------
$options[] = array( "name" => __('SLIDER','gxg_textdomain'),
"type" => "heading",
"img" => "/includes/admin/images/s.png");
$options[] = array( "name" => __('Set up your slider','gxg_textdomain'),
"type" => "info");
$options[] = array( "name" => __('Show Slider on Homepage','gxg_textdomain'),
"id" => $shortname."_slider",
"std" => "1",
"type" => "checkbox");
$options[] = array( "name" => __('Select a Slider','gxg_textdomain'),
"desc" => __('After you have created a slider, you can select it here.','gxg_textdomain'),
"id" => $shortname."_sliderimages",
"type" => "select",
"options" => $options_slides);
这是header.php文件中的代码,它回显了主页上的滑块:
<?php get_template_part( 'slider' ); ?>
目前,如果我将上述代码放在任何模板文件中以显示该特定模板上的滑块,则显示的唯一滑块是从主题选项面板中选择的滑块。这是slider.php文件中的代码:
<div id="slider" class="nivoSlider">
<?php
if ( of_get_option('gg_slider') && of_get_option('gg_sliderimages') ) {
global $wpdb, $post;
$slider = of_get_option('gg_sliderimages');
$meta = get_post_meta( $slider, 'gxg_slider_images', false );
if ( !is_array( $meta ) )
$meta = ( array ) $meta;
if ( !empty( $meta ) ) {
$meta = implode( ',', $meta );
$images = $wpdb->get_col( "
SELECT ID FROM $wpdb->posts
WHERE post_type = 'attachment'
AND ID IN ( $meta )
ORDER BY menu_order ASC
" );
foreach ( $images as $att ) {
// Get image's source
$src = wp_get_attachment_image_src( $att, 'full' );
$src = $src[0];
$caption = get_post_meta( $att , '_slidercaption', true);
$caption = htmlspecialchars($caption, ENT_QUOTES);
$cf = get_post_meta( $att , '_sliderurl', true);
// Show image
if ($cf) {
echo "<a href='$cf'><img src='{$src}' alt='' title='$caption' /></a>";
} else {
echo "<img src='{$src}' alt='' title='$caption' />";
}
}
}
}
?>
</div><!-- .slider-->
我基本上想要做的是我想修改slider.php文件,以便我可以直接输入滑块的ID或滑块的slug(在slider.php文件中)所以无论我在“主题选项”面板中选择哪个滑块,它都会回显。根据我的理解,这可能是根据我在“主题选项”面板中的选择选择滑块的代码:
$slider = of_get_option('gg_sliderimages');
而不是上面代码中的“of_get_option('gg_sliderimages')
”,我想知道是否有任何方法可以输入我想要显示的滑块的ID / slug。
期待解决方案。谢谢。
答案 0 :(得分:0)
如果我理解正确,您希望将代码的第二部分复制到自定义视图(例如single.php),并使用自定义帖子回显自定义滑块,这些帖子应该是您难以输入的?
好吧,在您复制代码之后,您应该删除第一个需要模板选项参数的条件,正如您已经想到的那样。这样,无论您在菜单中选择了什么,它都将始终显示滑块。
其次,注释掉这行代码:
$slider = of_get_option('gg_sliderimages');
你要这样做是因为$ slider变量包含一个由自定义主题函数of_get_option()转发的帖子ID数组。 之后,您需要根据需要定义自己的数组,自定义帖子数组。 例如:
$slider[] = array('123', '256', '455');
另外,请记住,重新定义全局变量可能会进一步破坏代码,例如,如果您的single.php文件期望之前定义的$ post by query_posts();在这种情况下,您应该在foreach循环后重置查询。