web-dev-qa-db-ja.com

Utm_campaignに応じて投稿テキスト内のNextpageタグを削除する方法

Utm_campaignによっては、投稿テキスト内の「nextpage」タグを削除することはできますか?

私の訪問者が来ている場所に応じて、私はを削除したいです。

<!--nextpage--> 

私の投稿.

私はこれを使っています

if($_GET['utm_campaign']== 'nonextpagecampaign') {

キャンペーン名によって物事を表示するかどうかを表示するためにテンプレートに直接追加しますが、nextpageタグの場合はそれほど簡単ではありません。

4
user3492770

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;
    }
};

この問題についてもっと読む

より一般的には、 この警告 / <!--nextpage-->を使用した場合のSEOへの影響について読んでください。

5
cjbj

content_paginationを使うことができますコーデックス グローバルを直接変更せずにページ区切り付きコンテンツを変更するためのフィルタ:

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パラメータが検出されたときに、結合されたコンテンツを含む配列を返します。うまくいけばあなたはあなたのニーズに合わせてこれをさらに調整することができます。

4
birgire