¿Cómo agregar un estilo en línea a la etiqueta p generada en the_content () usando PHP?

2

Estoy intentando agregar un estilo en línea a las etiquetas de mis párrafos que se sobresalen usando the_content();

He intentado reemplazar cadenas, vea pregunta que hice antes. Pero no lo hará porque the_content se hace eco y no lo devuelve. Si devuelvo el contenido con get_the_content(); , no se imprime en las etiquetas de párrafo.

¿Puede alguien ayudarme con esto?

    
pregunta Joshc 15.11.2012 - 14:31

4 respuestas

4

Gracias a @papirtiger

Llegó con esta solución solo para aplicarla a una función de contenido específica.

En mi pregunta no expliqué que solo necesitaba trabajar en un contenido específico de the_content, en cambio creo que las soluciones anteriores son soluciones globales, y ambas son soluciones excelentes desde ese punto de vista.

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

?>
    
respondido por el Joshc 15.11.2012 - 16:25
2

Puede usar su cadena personalizada reemplazar en una función personalizada "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;
}
    
respondido por el Mridul Aggarwal 15.11.2012 - 15:01
1

Usa filtro y acciones:

/**
 * 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 );

    }

Actualizar

Si desea utilizar un filtro solo para un trabajo especial en lugar de un filtro global, agregue el filtro en el lugar donde lo necesite y luego vuelva a eliminarlo.

Primero define tu filtro de devolución de llamada:

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

Coloca esta función donde quieras. Regla de oro: si desea reutilizar la devolución de llamada, colóquela en un archivo central como functions.php. Si la devolución de llamada es solo para un trabajo (muy) especial, colóquelo en el mismo archivo que hace el trabajo.

Ahora debemos agregar el filtro, por lo que la salida de the_content se filtrará:

<?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' );

Por lo tanto, no tiene que jugar con get_the_content() y puede reutilizar fácilmente la devolución de llamada si es necesario.

    
respondido por el Ralf912 15.11.2012 - 15:05
0

Podría llegar tarde a esto, pero usa esto:

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

Luego llama a $ contenido donde quieras.

Básicamente, the_content se guarda en la memoria (otra dimensión de tiempo) y no se recupera ningún dato hasta que se llama a ob_get_clean() . Dicho esto, the_content() mantiene el formato ya que get_the_content() no lo hace. Esta es la razón por la que muchas respuestas intentarán filtrar get_the_content() , lo cual es bastante problemático.

    
respondido por el Pobe 11.07.2014 - 20:44

Lea otras preguntas en las etiquetas