Eliminar el título de la página en la página de inicio estática
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!
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 - 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".

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.

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

¡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;
}

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.

<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.

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: Lamento si te hice algo mal. Solo comparé los tiempos y había una diferencia de 2 minutos.

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?

@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. :)

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, 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...).
