it-swarm.com.de

Entfernen des Nextpage-Tags im Beitragstext in Abhängigkeit von utm_campaign

Ist es abhängig von utm_campaign möglich, "nextpage" -Tags im Beitragstext zu entfernen?

Je nachdem, woher meine Besucher kommen, möchte ich die entfernen

<!--nextpage--> 

von meinem Beitrag.

Ich benutze das

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

direkt in meiner Vorlage, um abhängig vom Kampagnennamen Dinge anzuzeigen oder nicht, aber für das nextpage-Tag ist es nicht so einfach.

4
user3492770

Sie können the_post hook verwenden, um <!--nextpage--> zu entfernen. In diesem Fall:

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

Lesen Sie mehr zu diesem Thema

Im Allgemeinen sollten Sie diese Warnung über die SEO-Auswirkungen der Verwendung von <!--nextpage--> lesen.

5
cjbj

Wir können den content_pagination benutzenKodex filtern, um den paginierten Inhalt zu ändern, ohne die Globals direkt zu ändern:

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

wobei wir ein Array mit dem kombinierten Inhalt zurückgeben, wenn der richtige GET-Parameter für utm_campaign erkannt wird. Hoffentlich können Sie dies weiter an Ihre Bedürfnisse anpassen.

4
birgire