web-dev-qa-db-fra.com

Supprimer la fonction ou le filtre

Je travaille avec un thème enfant de Wordpress-Bootstrap de 320press.com. Je veux me débarrasser de la classe de plomb ajoutée au premier paragraphe du contenu.

J'ai regardé dans le codex Wordpress dans ces articles:

Mais je n’ai pas autant d’expérience en PHP, mais uniquement en HTML - je ne peux donc pas vraiment dire s’il s’agit d’un filtre ou d’une fonction à supprimer - j’ai essayé les deux solutions décrites ci-dessus, mais j’ai l'impression de ne pouvoir en utiliser aucune.

C'est le PHP de functions.php qui ajoute la classe

// Add lead class to first paragraph
function first_paragraph( $content ){
    global $post;

    // if we're on the homepage, don't add the lead class to the first paragraph of text
    if( is_page_template( 'page-homepage.php' ) )
        return $content;
    else
        return preg_replace('/<p([^>]+)?>/', '<p$1 class="lead">', $content, 1);
}
add_filter( 'the_content', 'first_paragraph' );
1
Sillo

Votre problème n'est pas que vous ayez mal agi, mais bien au mauvais moment. Quand cela se produit est important, pas où.

Dans un thème enfant, le fichier functions.php est chargé, puis les parents. Vous procédez ainsi:

  1. Supprimer la fonction first_paragraph du filtre the_content
  2. Ajoutez la fonction first_paragraph au filtre the_content

Clairement, ce n'est pas le bon sens. C'est comme construire d'abord le penthouse d'un gratte-ciel, puis les fondations ensuite, ça ne marchera pas. Ici, vous ne pouvez pas supprimer le filtre car il n'a pas encore été ajouté.

Pour contourner ce problème, supprimez le filtre ultérieurement en utilisant une action/un crochet, par exemple:

// when the init hook fires
add_action( 'init', 'sillo_remove_that_filter' );

function sillo_remove_that_filter() {
    // remove the filter
    remove_filter( 'the_content', 'first_paragraph' );
}
5
Tom J Nowell