首先,我不认为只为背景创建自定义帖子类型是正确的选择:背景是图像,图像已经有了自己的帖子类型:attachment.
如果你有Worpress 3.5+ 您可以注册custom taxonomy 对于附件,请调用它,例如“image\\u scope”:
register_taxonomy(\'image_scope\', \'attachment\', $args );
对于
$args
数组请参见
codex, 但要确保
$args[\'public\'] = true
$args[\'show_ui\'] = true
$args[\'show_admin_column\'] = true
$args[\'update_count_callback\'] = \'_update_generic_term_count\'
在您的媒体管理器中,您将此分类设置为特定的术语,例如“背景”。
现在,在模板文件中,您可以使用自定义wp\\U查询,使用tax\\U查询仅选择分类法image\\u scope设置为“background”的背景:
$args = array(
\'post_type\' => \'attachment\',
\'post_status\' => \'inherit\',
\'posts_per_page\' => -1,
\'orderby\' => \'rand\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'image_scope\',
\'field\' => \'slug\',
\'terms\' => \'background\'
)
);
);
$bg_query = new WP_Query( $args );
如您所见,顺序已经随机化,因此当您在模板上打印它时,不需要通过js随机化。
因此,在模板中,在查询之后,您将拥有:
if ( $bg_query->have_posts() ) :
echo \'<div id="full-bg">\';
$i = -1;
while( $bg_query->have_posts() ) :
$i++;
$bg_query->the_post();
$url = wp_get_attachment_url( get_the_ID() );
$class = $i == 0 ? \'full-bg active\' : \'full-bg\';
?>
<img class="<?php echo $class; ?>" src="<?php echo $url; ?>" alt="<?php the_title; ?>" data-desc="<?php the_excerpt(); ?>" />
<?php
endwhile;
echo \'</div>\';
endif;
wp_reset_postdata();
?>
以及javascript:
jQuery(document).ready(function($) {
function handle_active() {
var $active = $("#full-bg img.active");
var title = $active.attr(\'alt\');
var desc = $active.data(\'desc\');
alert(\'Active title is\' + title + \' and active description is \' + desc);
}
setInterval(function(){
var $active = $("#full-bg img.active");
$active.animate( {opacity:0}, 500, function(){
$(this).removeClass(\'active\');
});
if( $active.next(\'img\').length > 0 ) {
$active.next(\'img\').addClass(\'active\').animate( {opacity:1}, 500, function() {
handle_active();
});
} else {
$(\'#full-bg img\').eq(0).addClass(\'active\').animate( {opacity:1}, 500, function() {
handle_active();
});
}
}, 4000);
handle_active();
}
当然,更改handle\\u active()函数以满足您的需要。
希望有帮助,但请注意代码是not 经过测试,我not js开发人员。。。