web-dev-qa-db-fra.com

Comment ajouter un style en ligne à la balise <p> sortie dans the_content () en utilisant PHP?

J'essaie d'ajouter un style en ligne à mes balises de paragraphe qui sont sorties à l'aide de the_content();

J'ai essayé de remplacer la chaîne, voir question je l'ai fait plus tôt. Mais ce ne sera pas le cas parce que le_contenu l'aura renvoyé. Si je renvoie le contenu en utilisant get_the_content();, les balises de paragraphe ne seront pas affichées.

Est-ce que quelqu'un peut m'aider avec ça?

3
Joshc

Merci à @papirtiger

Entré avec cette solution juste pour l'appliquer à une fonction de contenu spécifique.

Je n'ai pas expliqué dans ma question que je n'avais besoin que de travailler sur un contenu spécifique, mais je pense que les solutions ci-dessus sont globales et que ce sont toutes deux d'excellentes solutions.

<?php 

    $phrase = get_the_content();
    // This is where wordpress filters the content text and adds paragraphs
    $phrase = apply_filters('the_content', $phrase);
    $replace = '<p style="text-align: left; font-family: Georgia, Times, serif; font-size: 14px; line-height: 22px; color: #1b3d52; font-weight: normal; margin: 15px 0px; font-style: italic;">';

    echo str_replace('<p>', $replace, $phrase);

?>
4
Joshc

Vous pouvez utiliser votre chaîne personnalisée à remplacer dans une fonction personnalisée "the_content".

function custom_the_content($more_link_text = null, $stripteaser = false) {

    $content = get_the_content($more_link_text, $stripteaser);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);
    // apply you own string replace here
    echo $content;
}
2
Mridul Aggarwal

Je pourrais être en retard pour celui-ci, mais utilisez ceci:

ob_start();
the_content();
$content = ob_get_clean();

Ensuite, appelez $ content où vous voulez.

Fondamentalement, the_content est conservé en mémoire (une autre dimension temporelle) et aucune donnée n'est extraite jusqu'à ce que ob_get_clean() soit appelé. Ceci dit, the_content() conserve le format, contrairement à get_the_content(). C'est pourquoi beaucoup de réponses essaient de filtrer get_the_content(), ce qui est assez gênant.

1
Pobe

Utilisez le filtre et les actions:

/**
 * Plugin Name: Your_awsome_inlinestyle
 * Plugin URI:  http://wordpress.stackexchange.com/questions/72681/how-to-add-an-inline-style-to-the-p-tag-outputted-in-the-content-using-php
 * Description: See link to plugin
 * Version:     0.1
 * Author:      Ralf Albert
 * Author URI:  http://yoda.neun12.de
 * Text Domain:
 * Domain Path:
 * Network:
 * License:     GPLv3
 */
    add_action( 'plugins_loaded', 'init_inlinestyler', 10, 0 );

    function init_inlinestyler(){

        add_filter( 'the_content', 'add_inlinestyle_to_p_tag', 10, 1 );

    }

    function add_inlinestyle_to_p_tag( $content = null ){

        if( null === $content )
            return $content;

        return str_replace( '<p>', '<p style="color:red">', $content );

    }

Mettre à jour

Si vous souhaitez utiliser un filtre uniquement pour un travail spécial au lieu d'un filtrage global, ajoutez le filtre juste à l'endroit où vous en avez besoin et supprimez-le à nouveau.

Commencez par définir votre callback-filter:

function insert_inline_style( $content = null ){ ... }

Placez cette fonction où vous voulez. Règle générale: si vous souhaitez réutiliser le rappel, placez-le dans un fichier central tel que functions.php. Si le rappel concerne uniquement un travail (très) spécial, placez-le dans le même fichier que celui qui effectue le travail.

Maintenant, nous devons ajouter le filtre, donc le résultat de the_content sera filtré:

<?php
// add the filter
    add_filter( 'the_content', 'insert_inline_style', 10, 1 );

// output the post content
    the_content();

// remove the filter if it is not longer needed
    remove_filter( 'the_content', 'insert_inline_style' );

Ainsi, vous n'avez pas besoin de manipuler get_the_content() et pouvez facilement réutiliser le rappel si nécessaire.

1
Ralf912