Personalizar the_title de Wordpress con add_filter

22 ago 2011, 03:39:03
Vistas: 20.8K
Votos: 3

Estoy intentando crear un título personalizado en WordPress para posts creados bajo un tipo de post personalizado. Básicamente, es un registro de cambios de versión para una aplicación. Me gustaría poder ingresar solo el número de versión en el campo del título, y que la salida se estandarice con un texto predefinido.

Mi tipo de post personalizado es 'custom_version' y el formato de título que quiero obtener es "La aplicación ha sido actualizada a la versión ".

He entendido que esto se puede lograr usando add_filter y he estado probando con este código durante días, pero no soy un experto en PHP así que agradecería mucho la ayuda :) Aquí está el código:

add_filter('the_title', 'nuevo_titulo');
function nuevo_titulo($titulo) {
    global $post, $post_ID;
    if (get_post_type() == 'custom_version') {
        $titulo = 'La aplicación ha sido actualizada a la v'.$titulo;
    }
    return $titulo;
}
0
Todas las respuestas a la pregunta 2
4
10

El problema es que estás mezclando las variables $title. $title es el parámetro pasado a la función new_title, pero luego lo usas como un array: $title['custom_version']. Prueba esto:

add_filter('the_title', 'new_title', 10, 2);
function new_title($title, $id) {
    if('custom_version' == get_post_type($id))
        $title = 'La aplicación ha sido actualizada a la v'.$title;
    return $title;
}

También recomiendo encarecidamente que añadas un prefijo único a tu función, ya que podrías encontrarte con que otro plugin/tema esté usando una función llamada new_title, lo que causaría problemas.

22 ago 2011 03:46:07
Comentarios

Gracias por la respuesta tollmanz, probé tu código, pero el problema es que reemplaza TODOS los títulos incluyendo los de las páginas... Aquí hay una referencia de dónde se está haciendo: http://www.titaniumtrack.com/changelog/titanium-backup/3-0-6

shahz shahz
22 ago 2011 04:46:42

En realidad estoy intentando agregar este filtro solo a tipos de publicaciones personalizadas con "custom_version" identificado...

shahz shahz
22 ago 2011 04:55:28

Editado... Verifico que el post_ID está asociado con una publicación del tipo "custom_version" antes de manipular el título. Disculpas por la versión inicial. No me di cuenta de que solo debía ser para ese CPT.

tollmanz tollmanz
22 ago 2011 04:57:47

Es posible que tengas Yoast instalado; si es así, deberás mirar add_filter 'wpseo_title'.

Herbert Van-Vliet Herbert Van-Vliet
5 jul 2018 10:36:57
0

Creo que WooCommerce hizo un buen trabajo al mostrar posibles formas de verificar si realmente deseas sobrescribir el título usando el filtro the_title.

A veces, puedes cambiar el título que aparecerá en tu lista de categorías y otros lugares donde no quieres que se modifique.

Así es como lo hacen:

# plugins/woocommerce/includes/wc-page-functions.php

function wc_page_endpoint_title( $title ) {
    global $wp_query;
    if ( ! is_null( $wp_query ) && ! is_admin() && is_main_query() && in_the_loop() && is_page() && is_wc_endpoint_url() ) {
        $endpoint       = WC()->query->get_current_endpoint();
        $action         = isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : '';
        $endpoint_title = WC()->query->get_endpoint_title( $endpoint, $action );
        $title          = $endpoint_title ? $endpoint_title : $title;
        remove_filter( 'the_title', 'wc_page_endpoint_title' );
    }
    return $title;
}

add_filter( 'the_title', 'wc_page_endpoint_title' );

Más importante que reescribir el título, son los métodos y verificaciones que hacen...

! is_admin() && is_main_query() && in_the_loop() && is_page() && is_wc_endpoint_url() etc

Ten en cuenta estos aspectos antes de sobrescribir títulos que no deseas modificar o en lugares donde no deberías.

17 oct 2023 23:10:09