Eliminar el título de la página en la página de inicio estática

29 mar 2011, 23:08:59
Vistas: 7.91K
Votos: 2

Me gustaría eliminar el título de la publicación de mi página de inicio estática. Solo esa página. He creado un tema hijo a partir de un tema gratuito de Press75. Por lo tanto, me gustaría hacer este cambio en el archivo function.php de mi tema hijo.

Usé este código pero elimina el título de todas las páginas, publicaciones y mi navegación:

add_filter( 'the_title', 'remove_page_title' );

function remove_page_title() {
    if(is_page('138')) {
    }
    return '';
}

Pensé que solo eliminaría el título de la página con ID 138. ¿Qué estoy haciendo mal?

¡Gracias!

4
Comentarios

¿Crear una front-page.php plantilla y eliminar el título?

t31os t31os
30 mar 2011 01:59:22

Esta fue la solución más fácil. Pero parece excesivo crear una plantilla solo para eliminar el título. Puedo hacer esto en el functions.php cuando uso el Hybrid Framework, simplemente usando uno de los hooks de Justin.

Intrepid Realist Intrepid Realist
1 abr 2011 00:10:52

Me encontré con esto ya que estoy teniendo exactamente el mismo problema. Probé el enfoque de Kaiser-Chip que funcionó bien, excepto que también eliminó todos los elementos del menú y todos los títulos de las publicaciones en el widget de la barra lateral. Además, aunque eliminó el título de la página, el estilo del título permaneció, incluyendo algo de relleno y un borde inferior.

¿Existe alguna otra solución?

User User
30 mar 2011 13:32:16

@Anders ¿Podrías eliminar esta respuesta y agregarla como una nueva pregunta?

Chris_O Chris_O
6 abr 2011 11:56:30
Todas las respuestas a la pregunta 5
5

envuelve tu llamada a la función add_filter en una etiqueta condicional y utiliza la función incorporada return false:

if ( is_page('138') )
{
      add_filter( 'the_title', '__return_false' );
}
29 mar 2011 23:22:05
Comentarios

Me gusta esta sugerencia, pero ¿no sería mejor usar if ( ! is_front_page() ) en lugar de un ID de página codificado, como if ( is_page( '138' ) )?

Chip Bennett Chip Bennett
29 mar 2011 23:30:21

@Chip Bennett - Seguramente mejor. Pero al leer la pregunta, la respuesta encaja bien. En mi opinión creo que es mejor ofrecer una solución lo más cercana posible a la pregunta, incluso cuando hay muchas soluciones mejores disponibles. Hay un dicho de donde vengo: "El campesino no come lo que no conoce".

kaiser kaiser
29 mar 2011 23:57:22

Pero este era el problema original: "Me gustaría eliminar el título de la publicación de mi página frontal estática. Solo esa página." En cuyo caso, definitivamente recomendaría la solución del archivo de plantilla front-page.php. En cualquier caso, tu respuesta obtuvo mi voto.

Chip Bennett Chip Bennett
30 mar 2011 06:10:18

Agrego este código usando el ID de la página o is_front_page y no pasa nada...

Intrepid Realist Intrepid Realist
1 abr 2011 00:11:42

No estoy seguro acerca de la función __return_false. Podría tener un nombre similar a ese. También podrías escribir una pequeña función tú mismo que devuelva false y agregarla. De todos modos, el comentario de Chip es la mejor solución.

kaiser kaiser
1 abr 2011 05:04:54
0

¡Casi lo tienes!

Aquí está tu código original:

add_filter( 'the_title', 'remove_page_title' );

function remove_page_title() {
   if(is_page('138')) {
   }
   return '';
}

Lo que está haciendo es agregar un filtro en the_title que no acepta ningún parámetro. Ese es tu primer error. El filtro the_title en realidad toma dos parámetros: el título de la página/entrada y el ID de la página/entrada. Entonces, primero, reescribamos nuestro hook:

add_filter( 'the_title', 'remove_page_title', 10, 2 );
function remove_page_title( $title, $id ) {

}

Esto asigna nuestro filtro con una prioridad de 10 y nos permite aceptar ambos parámetros enviados por el filtro. Luego especificamos los parámetros que acepta nuestra función.

Dentro de la función, queremos verificar si estamos en la página correcta. Si es así, devolvemos '', si no, devolvemos el título:

if( '138' == $id ) return '';

return $title;

Tu función original siempre devolvía '' cuando se ejecutaba el filtro. Por eso obtenías un título en blanco en cada página, no solo en la página que querías.

Nuestro código completo

Así que tu filtro completo, reescrito para aceptar parámetros y usar la lógica correcta:

add_filter( 'the_title', 'remove_page_title', 10, 2 );

function remove_page_title( $title, $id ) {
    if( '138' == $id ) return '';

    return $title;
}
16 dic 2011 20:51:48
0

Esta es la forma de eliminar el título principal (no la etiqueta) de la página de inicio en el tema 2020 sin eliminar también the_title de los elementos del menú:

function no_title_front_page( $title, $id = null ) {
    // Si es la página de inicio y hay un ID
    if (is_front_page() && !is_null( $id )) {
        return ''; // Devolver vacío para eliminar el título
    }
    return $title; // Devolver el título normal en otros casos
}

add_filter( 'the_title', 'no_title_front_page', 10, 2 );


function wpse309151_remove_title_filter_nav_menu( $nav_menu, $args ) {
    // Estamos trabajando con el menú, así que eliminamos el filtro del título
    remove_filter( 'the_title', 'no_title_front_page', 10, 2 );
    return $nav_menu;
}

// Este filtro se ejecuta justo antes del proceso de creación de elementos del menú
add_filter( 'pre_wp_nav_menu', 'wpse309151_remove_title_filter_nav_menu', 10, 2 );

function wpse309151_add_title_filter_non_menu( $items, $args ) {
    // Hemos terminado de trabajar con el menú, así que volvemos a añadir el filtro del título
    add_filter( 'the_title', 'no_title_front_page', 10, 2 );
    return $items;
}

// Este filtro se ejecuta después de que se haya creado el menú de navegación
add_filter( 'wp_nav_menu_items', 'wpse309151_add_title_filter_non_menu', 10, 2 );

Código basado en esta respuesta.

12 jun 2020 13:18:10
0

Una forma para header.php:

<?php if (is_page('138')) { echo'
<style type="text/css" title="text/css">
yourpagetitleselector {display:none;}
</style>'
; ?>
29 mar 2011 23:15:55
7
-1

Si te entiendo correctamente — que deseas no mostrar el <title> para la página de inicio — puedes usar:

<title><?php if ( ! is_front_page() ) { the_title(); } ?></title>
29 mar 2011 23:26:21
Comentarios

<title> !== the_title(); Ver: http://codex.wordpress.org/Function_Reference/the_title Además, esto es exactamente lo que @Chip Bennett sugirió como comentario a mi respuesta.

kaiser kaiser
29 mar 2011 23:58:58

Vaya. Respondí antes de que Chip publicara su comentario. También aclaré mi respuesta con "si te entendí correctamente", lo cual claramente no hice.

Ryan Ryan
30 mar 2011 00:12:43

@Ryan: Lamento si te hice algo mal. Solo comparé los tiempos y había una diferencia de 2 minutos.

kaiser kaiser
30 mar 2011 01:18:22

Espero que las respuestas, votaciones, reputación, etc. no sean terriblemente controvertidas aquí. Realmente no me preocupan; lo que realmente importa es que la gente obtenga ayuda para resolver sus problemas, ¿verdad?

Chip Bennett Chip Bennett
30 mar 2011 06:15:39

@kaiser: Lo agradezco, estaba más molesto conmigo mismo por no leer la pregunta, que respondiste correctamente. Fue un poco impactante ser un novato en este sitio y recibir votos negativos, pero como dice Chip, se trata de que la gente obtenga sus respuestas. :)

Ryan Ryan
30 mar 2011 07:45:32

Estoy muy confundido sobre cómo funciona este sitio. La respuesta de Ryan no se parece en nada a la de Chip para mí. Parece que Ryan sugiere que ponga esto en el archivo de plantilla y no en el functions.php. Podría estar equivocado, pero quería hacer este cambio usando un hook o un filtro. Estoy completamente confundido acerca de por qué esto es tan difícil, ya que lo he hecho antes usando el Hybrid Theme Framework. ¿Es porque mi tema actual no tiene un hook implementado para esto? Y la mejor solución hasta ahora es un comentario a mi publicación original y no una de las respuestas, así que ¿cómo otorgo el crédito?

Intrepid Realist Intrepid Realist
1 abr 2011 00:19:52

@Intrepid Realist, cuando di esta respuesta, no había leído tu pregunta detenidamente. Mi solución es ajustar tu plantilla header.php, no functions.php como pediste. Como malinterpreté tu pregunta, comentaría en la respuesta que más se acerca a lo que necesitas. Si colocas el símbolo @ antes del nombre de la persona, les notificará del comentario para que puedan responderte (por ejemplo, @kaiser, realmente no entiendo...).

Ryan Ryan
4 abr 2011 04:17:22
Mostrar los 2 comentarios restantes