Est-il possible de supprimer la balise "nextpage" dans le texte d'un message en fonction de utm_campaign?
En fonction de la provenance de mes visiteurs, je souhaite supprimer le
<!--nextpage-->
de mon post.
J'utilise ceci
if($_GET['utm_campaign']== 'nonextpagecampaign') {
directement dans mon modèle afin d'afficher ou non des éléments en fonction du nom de la campagne, mais pour le tag nextpage, ce n'est pas si simple.
Vous pouvez utiliser the_post
hook pour supprimer <!--nextpage-->
. Dans ce cas:
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;
}
};
Plus généralement, vous voudrez peut-être lire cet avertissement à propos des effets de l’utilisation de <!--nextpage-->
sur le référencement.
Nous pouvons utiliser le content_pagination
codex filtre pour modifier le contenu paginé sans modifier directement les paramètres globaux:
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;
} );
où nous retournons un tableau avec le contenu combiné lorsque le paramètre correct utm_campaign
GET est détecté. J'espère que vous pourrez adapter cela à vos besoins.