此函数用于在主页上显示自定义帖子类型(frontpage_items)。它曾经工作过,但在WP的一次更新中,它在某个地方坏了。现在它只显示4个帖子中的一个,并打断页脚。
我只做了一个post_per_page,而不是all(-1),就可以停止打断我的页脚了。但我真的需要把他们四个都拿回来。
PS。这是我用近海资源建造的一个场地。。。
这是函数的代码:
function frontpage_items_init() {
$args = array(
'exclude_from_search' => true,
'publicly_queryable' => false,
'label' => 'Frontpage Items',
'show_ui' => true,
'show_in_menu' => true,
'supports' => array( 'title', 'editor')
);
register_post_type( 'frontpage_items', $args );
}
add_action( 'init', 'frontpage_items_init' );
add_action('woo_content_after', 'show_frontpage_items', 9999);
function show_frontpage_items() {
if(is_front_page()) {
$f_posts = get_posts(array(
'post_type' => 'frontpage_items',
'order' => 'ASC',
'posts_per_page' => -1
));
if(count($f_posts) = 0) {
global $post;
foreach ($f_posts as $fp) {
setup_postdata($fp);
?>
<div class="frontpage_item <?php echo $fp->post_name; ?>_wrap">
<div class="wrap">
<div class="frontpage_item_body">
<?php the_content(); ?>
</div>
<div class="clear"></div>
</div>
</div>
<div class="clear"></div>
<?php
}
}
}
wp_reset_query();
}
我在这里看到的多个错误可能会导致您的问题。首先,您试图从posts计数中分配一个值,而不是通过比较运算符进行检查。
if( count($f_posts) = 0 )
应该是类似的东西
if( count($f_posts) != 0 ) //not equal to 0
第二个问题是Wordpress要求您在使用方法迭代posts时使用全局$post
变量。
foreach( $f_posts as $fp )
setup_postdata($fp);
应该是
foreach( $f_posts as $post )
setup_postdata($post);
有关更多信息,请参阅get_posts()
的文档