Cambiar el título de la página desde el complemento

2

¿Es posible cambiar el título de la página sobre la marcha desde el complemento?

He intentado $ post global, pero parece que el complemento se ejecuta después.

¿Alguna idea?

Editar: Estoy escribiendo algunas páginas sobre la marcha, basadas en la misma página / publicación, por lo que cada página muestra el mismo título. Buscando una forma de hacerlo a través de un código corto o escribiendo mi propio complemento / función

    
pregunta greenbandit 24.03.2012 - 15:07

2 respuestas

3

Hay un filtro para eso:

function wpse_alter_title( $title, $id )
{
    // $id = $post->ID;
    // alter the title here
    return $title;
}

Si desea modificar los títulos "Protegido" y "Privado", necesita otros filtros:

// Preserve the "%s" - else the title will be removed.
function wpse_alter_protected_title_format( $title )
{
    return __( 'Protected: %s' );
}

function wpse_alter_private_title_format( $title )
{
    return __( 'Private: %s' );
}

Por último, pero no menos importante, debes agregar las devoluciones de llamada de tu filtro con suficiente antelación.

function wpse_load_alter_title()
{
    add_filter( 'the_title', 'wpse_alter_title', 20, 2 );
    add_filter( 'protected_title_format', 'wpse_alter_protected_title_format' );
    add_filter( 'private_title_format', 'wpse_alter_private_title_format' );
}
add_action( 'init', 'wpse_load_alter_title' );
    
respondido por el kaiser 24.03.2012 - 15:42
1

Esto depende del contexto en el que se está representando el título de la página y de la forma en que se ingresan los datos.

Considera lo siguiente:

<h2><?php the_title(); ?></h2>

La solución implicaría engancharse al filtro the_title y modificarlo de inmediato.

¿Qué tal esto?

<h2><?php echo $post->post_title; ?></h2> // not nice!

Y no es agradable debido a los problemas para alterarlo. Es difícil saber cómo se llenó el $post en primer lugar. Considera:

foreach( get_posts( ... ) as $post ):
    ...

No hay lugar para enganchar allí, a primera vista. Pero se puede hacer dentro de la consulta de publicaciones reales. Consulta el filtro found_posts .

Sin embargo, considera lo siguiente:

$post = $wpdb->get_row( "SELECT .... " );
echo "<h2>$post->post_title</h2>"

Eso es una locura.

El punto es que, dependiendo de su situación, probablemente haya una buena solución. Verifique el archivo de plantilla, vea cómo se representa el título. Repárelo para que sea cómodo o haga que su complemento trabaje un poco más.

Y nunca podrá modificar el título a través de un complemento si mysql_query() se utiliza directamente para recuperar el título. Sí, realmente he visto esto hecho. Algunas personas van tan lejos como el código duro en la plantilla incluso. Al igual que front-page.php contendrá <h2>Home</h2> y nunca usará el $post->post_title ni consultará la base de datos.

Depende del contexto y de la situación.

    
respondido por el soulseekah 24.03.2012 - 15:44

Lea otras preguntas en las etiquetas