在循环中的帖子之间添加特定的帖子类别

时间:2014-05-13 作者:tensixtythree

我正在构建一个基于砖石主题的网站,并希望在每三篇帖子之后添加一个特定类别的帖子(“赞助商”)。例如:

Post Post
赞助商Post
赞助商Post Post
赞助商Post Post
赞助商Post Post

我已经搜索了很多类似的问题,但我能找到的最接近的是放置一个广告,如下面所示。然而,我想用一个分类帖子来代替这个广告。

<?php
$count=0;
// Begin loop
while ( have_posts() ) : the_post();
$count++;
get_template_part( \'content\', get_post_format() );
if ( $count%3==0 ) {
echo \'AD\';
}
endwhile; ?>
我对编程(尤其是php和wp)还是一个完全的初学者,但我对如何实现这一点有一些想法。我尝试了很多不同的方法,但我基本上是在黑暗中拍摄。这是我尝试的基本想法(“赞助商”是cat=22)。

<?php $count=0;
while ( have_posts() ) : the_post();
count++;
if ($count%3==0) {
   <?php query_posts($query_string . \'&cat=22&posts_per_page=1\'); ?>
   get_template_part( \'content\', get_post_format() );
else
   <?php query_posts($query_string . \'&cat=-22&posts_per_page=1\'); ?>
   get_template_part( \'content\', get_post_format() );
?>
这显然不起作用(query\\u posts不应该在循环中使用?)但我希望它能显示出我的一些思考过程。我无法找到从已经运行的循环中排除类别的方法。

我的另一个想法是两个循环,其中第一个循环排除“赞助商”类别并发布3次,然后第二个循环仅发布“赞助商”的1篇文章。然而,当我这样做的时候,我不知道如何让这个循环重复(即,只有4篇帖子出现)。

我该怎么做呢?我感谢你的帮助!

1 个回复
SO网友:Pieter Goosen

您可以以此作为开始。这需要进入功能。php。您可以在模板文件中使用普通循环,无需更改任何内容。这将在帖子3和6之后添加类别中的帖子。只需记住使用slug 属于您的类别。

function category_after_third_post( $post ) {
        global $wp_query;

        if ( $wp_query->post != $post )
            return;

        if ( 3 != $wp_query->current_post || 6 != $wp_query->current_post )
            return;

        $args = array(
        \'category_name\' => \'uit-die-koskas\',
        \'posts_per_page\' => 1
        );

        $catquery = new WP_Query($args);

        if ( $catquery->have_posts() ) :

            while ( $catquery->have_posts() ) : $catquery->the_post();

                get_template_part( \'content\', get_post_format() );

            endwhile;

        endif; 
    }

add_action( \'the_post\', \'category_after_third_post\' );
或者,您可以创建一个小部件,并在每第三篇文章之后添加它。

function cat_posts_sidebar() {
    register_sidebar( array(
        \'name\' => __( \'Sidebar for ads\', \'my-theme\' ),
        \'id\' => \'sidebar-10\',
        \'description\' => __( \'Sidebar to display cat post\', \'my-theme\' ),
        \'before_widget\' => \'<aside id="%1$s" class="widget %2$s">\',
        \'after_widget\' => \'</aside>\',
        \'before_title\' => \'<h3 class="widget-title">\',
        \'after_title\' => \'</h3>\',
    ) );    
}
add_action( \'widgets_init\', \'cat_posts_sidebar\' );
然后将第一个函数修改为此。

function category_after_third_post( $post ) {
        global $wp_query;

        if ( $wp_query->post != $post )
            return;

        if ( 3 != $wp_query->current_post || 6 != $wp_query->current_post )
            return;

        echo \'<div class="after-post-widget widget-area">\';
             dynamic_sidebar( \'sidebar-10\' );
        echo \'</div><!-- end .after-post-widget -->\';
    }

add_action( \'the_post\', \'category_after_third_post\' );  

结束

相关推荐

Current and next month posts

首先感谢阅读。我正在编写一个网站,要求本月有3个帖子标题,下个月有3个帖子标题(即将到来的活动)!我正在努力让它发挥作用。我正在使用wp\\u query来完成此操作,但我根本无法开始工作!任何帮助都将不胜感激:)谢谢我只是想进一步说明一下,因为我可能没有说清楚!我希望能够显示本月的3个事件/帖子,以及接下来的3个月的3个事件/帖子-我将如何做到这一点?请帮帮我,我有点疯了。。干杯这是当前第3个月博客标题的代码: <p class=\"blue\"><?ph