web-dev-qa-db-fra.com

Comment supprimer plus de lecture sur une seule post?

Comment pourrais-je terminer la suppression de la ligne suivante sur une seule publication?

<p><span id="more-XXX"></span></p>

J'ai besoin de supprimer toute la balise span. Existe-t-il une autre option que preg_replace?

1
Trek

Comme indiqué dans la documentation , si l'attribut rapide <!--more--> est utilisé dans un message pour désigner le point "coupure" du message à extraire, la balise the_content() affichera uniquement l'extrait jusqu'au <!--more--> point rapide sur les pages de post non-single/non-permalien.

WordPress ajoute <span id="more-' . $post->ID . '"></span> au contenu dans ce cas. Comme il n'y a pas de contenu dans le <span> ( vérifiez le code ), vous pouvez facilement supprimer le <span> en filtrant le contenu:

add_filter( 'the_content', function( $content ) {
  return str_replace( '<span id="more-' . get_the_ID() . '"></span>', '', $content );
}

Notez que cela empêche le lien Lire plus de ne plus accéder à la zone où vous avez inséré <!--more-->. Un moyen plus simple d’y parvenir serait d’utiliser le filtre the_content_more_link et d’en supprimer la partie #more-<post_id>. Il y a quelques exemples dans le Codex pour cela.

2
swissspidy