通过插件挂接到循环中,并在每个X帖子之后输出一些内容?

时间:2014-04-14 作者:Branndon

我有一个插件,我想在主页上发布X个帖子后输出广告。主页是第1步,但一旦我得到主页的代码,像归档这样的事情也应该成为可能。

我如何连接到post循环,并说“在每个循环之后,增加一个计数器,然后如果计数器=我的数字,则输出一个ad”。我可以自己编写这段代码的所有逻辑,但在哪里挂接/实现我的代码是令人困惑的。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您可以尝试以下操作:

方法1:

我们可以通过the_post 操作,在主循环中:

add_action( \'loop_start\', \'wpse_141253_loop_start\' );

function wpse_141253_loop_start( $query )
{
    if( $query->is_main_query() )
    {
        add_action( \'the_post\', \'wpse_141253_the_post\' );
        add_action( \'loop_end\', \'wpse_141253_loop_end\' );
    }
}

function wpse_141253_the_post()
{
    static $nr = 0;

    if( 0 === ++$nr % 4 )
        echo \'<div> -------- MY AD HERE ------- </div>\';
}

function wpse_141253_loop_end()
{
    remove_action( \'the_post\', \'wpse_141253_the_post\' );   
}    
方法2:我们也可以通过the_content 过滤器,在主回路中:

add_action( \'loop_start\', \'wpse_141253_loop_start\' );

function wpse_141253_loop_start( $query )
{
    if( $query->is_main_query() )
    {
        add_filter( \'the_content\', \'wpse_141253_the_content\' );
        add_action( \'loop_end\', \'wpse_141253_loop_end\' );
    }
}

function wpse_141253_the_content( $content )
{
    static $nr = 0;

    if( 0 === ++$nr % 4 )
        $content .= \'<div>------- MY AD HERE -------</div>\';

    return $content;
}

function wpse_141253_loop_end()
{
    remove_action( \'the_post\', \'wpse_141253_the_content\' );   
}    
希望您可以根据自己的需要进行修改。

结束

相关推荐

Query date in wordpress loop

我目前有一个名为“事件”的自定义帖子类型。我根据这里的教程创建了这个http://tatiyants.com/how-to-use-wordpress-custom-post-types-to-add-events-to-your-site/. 我想查询日期,只显示日期即将到来的帖子,而不是过去的帖子。$event_date >= time然而,在教程中,他使用一个短代码显示结果。我正在尝试将其转换为标准wp循环,以便在索引中显示它。php。他在其短代码函数中使用以下内容:add_shortcode