如何根据utm_Campaign删除帖子文本中的NextPage标签

时间:2016-06-13 作者:user3492770

是否可以根据utm\\U活动删除帖子文本中的“nextpage”标记?

根据访问者来自何处,我想删除

<!--nextpage--> 
我的职位。

我在用这个

if($_GET[\'utm_campaign\']== \'nonextpagecampaign\') {
直接在我的模板中显示或不显示取决于活动名称的内容,但对于下一页标签,这并不容易。

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

您可以使用the_post 要移除的挂钩<!--nextpage-->. 在这种情况下:

add_action( \'the_post\', \'campaign_remove_nextpage\', 99);

function campaign_remove_nextpage ( $post ) {
    if ( ($_GET[\'utm_campaign\']== \'nonextpagecampaign\') && (false !== strpos( $post->post_content, \'<!--nextpage-->\' )) ) 
    {
        // Reset the global $pages:
        $GLOBALS[\'pages\']     = [ $post->post_content ];

        // Reset the global $numpages:
        $GLOBALS[\'numpages\']  = 0;

       // Reset the global $multipage:
        $GLOBALS[\'multipage\'] = false;
    }
};

Read more about this issue

一般来说,您可能想阅读this warning 关于使用SEO的效果<!--nextpage-->.

SO网友:birgire

我们可以使用content_paginationcodexfilter可修改分页内容,而无需直接修改全局:

add_filter( \'content_pagination\', function( $pages )
{
    // Target only the correct utm_campaign GET parameter 
    if( \'nonextpagecampaign\' !== filter_input( INPUT_GET, \'utm_campaign\', FILTER_SANITIZE_STRING ) )
        return $pages;

    // Remove the content pagination, only if it\'s already paginated
    if( count( $pages ) > 1 )
        $pages = [ join( \'\', $pages ) ];

    return $pages;
} );
其中,当utm_campaign 检测到GET参数。希望您可以根据自己的需要进一步调整。