WordPress: obtener título post_parent

3 minutos de lectura

avatar de usuario
Ryan

Creé una barra lateral personalizada que toma las páginas de los padres de la publicación:

query_posts("post_type=page&post_parent=6"); 

Me gustaría tomar el título de post_parent (es decir, “Acerca de”). the_title no funcionará porque es el título de las páginas secundarias.

¿Cómo puedo generar el título post_parent?

echo get_the_title( $post->post_parent );

o

echo get_the_title( X );

Donde X es cualquier ID de publicación/página válida.

No es necesario obtener un objeto de publicación completo solo para una propiedad.

  • ¡Gracias! Esto es agradable y limpio y justo lo que necesitaba.

    – Zade

    30/07/2012 a las 18:30

avatar de usuario
Demelziraptor

Parece que ya tienes el ID de la publicación principal, así que puedes usar esto:

<?php
    $parent_post_id = 6;
    $parent_post = get_post($parent_post_id);
    $parent_post_title = $parent_post->post_title;
    echo $parent_post_title;
?>

(Inserte su ID de publicación principal en $parent_post_id)

Árbitro: http://codex.wordpress.org/Function_Reference/get_post

  • Lo siento, no te sigo del todo. Digamos que mi ID de publicación principal es 6. ¿Debería ser el código post_title; ?>? Si es así, ¿debe estar en el bucle o funcionará un simple eco anterior?

    – Ryan

    4 de marzo de 2011 a las 20:04


  • Lo siento, no me dejó editar el comentario anterior. Consulte la versión editada del código anterior. No es necesario que esté en el bucle, simplemente puede hacer: <?php $parent_post_id = 6; $parent_post = get_post($parent_post_id); $parent_post_title = $parent_post->post_title; echo $parent_post_title; ?>

    – Demelziraptor

    4 de marzo de 2011 a las 20:32


  • Acabo de encontrar este código que no requiere codificar la identificación de la página: $titulo_padre = get_the_title($post->post_parent); echo $titulo_padre;

    – Ryan

    4 de marzo de 2011 a las 21:17


  • @Ryan Niiiiiice! Esto es lo que buscan las personas que llegan a esta página a través de una búsqueda. Sin codificación, sin pérdida de tiempo, solo c/p y funciona. 🙂

    – Thomas Maier

    21 de octubre de 2017 a las 14:22

  • ¿Podría publicar este código como una respuesta a continuación y cambiar la marca de esta respuesta a la nueva?

    – Thomas Maier

    21 de octubre de 2017 a las 14:23

Este es el código limpio y agradable que necesita:

También es seguro usarlo cuando hay más de un nivel de jerarquía principal.

<?php 

    $current = $post->ID;

    $parent = $post->post_parent;

    $grandparent_get = get_post($parent);

    $grandparent = $grandparent_get->post_parent;

    ?>

    <?php if ($root_parent = get_the_title($grandparent) !== $root_parent = get_the_title($current)) {echo get_the_title($grandparent); }else {echo get_the_title($parent); }?>

Sé que es una pregunta muy antigua, pero en caso de que alguien estuviera buscando una buena frase. Aquí está:

echo get_the_title( wp_get_post_parent_id( get_the_ID() ) );

Si desea mantener el filtro de título, vaya con:

echo apply_filters( 'the_title', get_the_title( wp_get_post_parent_id( get_the_ID() ) ) );

WordPress 5.7 presenta una nueva función de ayuda para obtener más fácilmente la ID de la publicación principal:
get_parent_post()

Esto también se puede utilizar junto con has_parent_post()por lo que podría tener algo parecido a:

<?php if ( has_parent_post() ) : ?>
    <a href="<?php the_permalink( get_parent_post() ); ?>">
        <?php the_title( get_parent_post() ); ?>
    </a>
<?php endif; ?>

Tenga en cuenta que estas funciones aceptan una “ID de publicación secundaria” como parámetro, que por defecto es la publicación actual.

https://make.wordpress.org/core/2021/02/10/introducing-new-post-parent-related-functions-in-wordpress-5-7/

avatar de usuario
MerchantProtocol.com

Escribí esto, tomará la publicación principal y luego repetirá el título de los padres y demás. Échale un vistazo y déjame saber si te funciona.

https://gist.github.com/1140481

Esto incluso debería funcionar fuera del ciclo de wordpress también.

¿Ha sido útil esta solución?