Estoy desarrollando un complemento que no usa un tipo de publicación personalizada, sino tablas de base de datos independientes. Es un complemento que muestra una lista de cursos con enlaces que llevan a las diferentes páginas de detalles del curso, donde el usuario puede suscribirse a un curso.
En el estado actual, estoy usando un shortcode para obtener los datos de los complementos en una página con una plantilla de página personalizada (page-courses.php).
Ahora quiero cambiar the_title()
dinámicamente, de acuerdo con la página que muestra el complemento (lista de cursos, página de detalles del curso con formularios, página de éxito de envío de formularios). Pero cada vez que hago eso con el siguiente filtro, los enlaces a otras páginas en el pie de página también cambian:
<?php
add_filter('the_title', 'custom_page_title');
function custom_page_title() {
return 'Custom Title';
}
Editar
En el footer.php tengo una función que incluye enlaces de pie de página con wp_nav_menu()
, así que puedo definirlos en Apariencia > Menús Pero con el filtro de arriba, todos los enlaces en el pie de página también cambian a "Título personalizado". Pero solo quiero cambiar el título de la página, sin afectar los enlaces del menú en el pie de página.
Al intentar agregar una etiqueta condicional in_the_loop()
, los enlaces de pie de página siguen afectados, aunque no están en el bucle.
<?php
add_action( 'loop_start', 'set_custom_title' );
function set_custom_title() {
if ( in_the_loop() ) {
add_filter( 'the_title', 'custom_page_title' );
}
}
function custom_page_title() {
return 'Custom Title';
}
Es similar a esta pregunta: filtrar el problema del título en la navegación , solo que los enlaces afectados están en el pie de página y in_the_loop()
no funciona.
¿Cómo puedo cambiar the_title()
mientras que solo afecta al título de la página actual que se muestra que no afecta a los enlaces en el pie de página ?
Edit 2 - Solution
Así que finalmente lo puse en funcionamiento:
<?php
add_action( 'loop_start', 'set_custom_title' );
function set_custom_title() {
add_filter( 'the_title', 'wpse83525_filter_the_title', 10, 2 );
}
function wpse83525_filter_the_title( $title, $id ) {
if ( 'page-listcourses.php' == get_post_meta( $id, '_wp_page_template', true ) ) {
return 'Custom Title';
}
return $title;
}
El archivo page-listcourses.php es una plantilla de publicación personalizada que asigné a la página estática llamada 'Cursos'.
Supongo que no funcionó antes porque el nombre de la página estática y el nombre de archivo de la plantilla de publicación personalizada eran los mismos.