Cómo obtener el ID del padre de una entrada

25 abr 2013, 10:06:19
Vistas: 17.6K
Votos: 3

Tengo una plantilla que muestra las entradas del blog (Página de Blog), al abrir una de las entradas que usa la plantilla single.php, ¿cómo puedo obtener el ID de su padre que es la (Página de Blog)?

Debo mencionar que quiero usar este ID para obtener el valor del meta box de la página de blog en single.php.

Lo mismo aplica para un tipo de post personalizado, digamos 'proyecto', donde una plantilla de página lista las entradas de proyectos (Página de Proyectos) y single-project.php para la entrada individual de proyecto. En este caso quiero obtener el ID de la (Página de Proyectos) en single-project.php.

11
Comentarios

¿Puedes explicar la situación? ¿Por qué quieres obtenerlo?

Vinod Dalvi Vinod Dalvi
25 abr 2013 10:11:52

El ID padre de la publicación no es una página de blog, sino otra publicación. No hay relación entre la publicación y tu página de blog.

Rajeev Vyas Rajeev Vyas
25 abr 2013 10:12:05

@VinodDalvi He editado la pregunta.

metalzade metalzade
25 abr 2013 10:24:08

@RajeevVyas entonces, ¿estás diciendo que no hay forma de obtener el ID de la página de blog?

metalzade metalzade
25 abr 2013 10:24:56

@metalzade claro que no, intenta usar get_option('page_for_posts') o revisa la función is_home en el codex como referencia.

Rajeev Vyas Rajeev Vyas
25 abr 2013 10:37:41

+1 por actualizar tu pregunta con más información. Todavía no estoy seguro de lo que quieres decir. Si tienes un tipo de entrada personalizado y está configurado como 'jerárquico', entonces puedes usar get_post( $post->post_parent ). Si estás usando una 'página' para entradas de blog en los ajustes, entonces get_option('page_for_posts') te dará el ID. Más información y quizá un fragmento de código nos ayudarán a darte una mejor respuesta.

Mere Development Mere Development
25 abr 2013 10:45:54

@MereDevelopment Gracias chicos, get_option('page_for_posts') funcionó para la página del blog, pero para el tipo de entrada personalizada $post->post_parent devuelve 0 lo cual no es correcto. He editado la pregunta nuevamente.

metalzade metalzade
25 abr 2013 11:06:50

Estás mezclando conceptos separados. El padre de un tipo de entrada personalizada jerárquica no es lo mismo que la página donde se muestran las entradas.

anu anu
25 abr 2013 11:22:48

@anu OK, ahora lo entiendo, ¿pero crees que hay alguna manera de obtener ese ID de página en single-project.php?

metalzade metalzade
25 abr 2013 11:47:46

@metalzade no hay relación a menos que la definas explícitamente. Por ejemplo, si tuvieras 2 páginas que listan las mismas publicaciones, ¿cuál debería ser la 'padre'? Entonces, puedes codificarlo manualmente, definirlo en la configuración o hacer alguna suposición implícita (por ejemplo, buscando la página que usa la plantilla particular)

anu anu
25 abr 2013 12:00:38

¿No estás buscando migas de pan?

brasofilo brasofilo
25 abr 2013 15:01:12
Mostrar los 6 comentarios restantes
Todas las respuestas a la pregunta 2
1

WordPress 5.7 introduce una nueva función de ayuda para obtener más fácilmente el ID de la publicación padre: get_post_parent()

Esto también puede usarse junto con has_post_parent(), por lo que podrías tener algo como:

<?php if ( has_post_parent() ) : ?>
    <a href="<?php the_permalink( get_post_parent() ); ?>">
        <?php
        echo sprintf(
            esc_html__( 'Volver a la página padre: %s', 'text-domain' ),
            get_the_title( get_post_parent() )
        );
        ?>
    </a>
<?php endif; ?>

Ten en cuenta que estas funciones aceptan un "ID de publicación hijo" 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/

10 feb 2021 23:09:25
Comentarios

"Estas funciones se introdujeron originalmente como get_parent_post() y has_parent_post() pero desde entonces se renombraron a get_post_parent() y has_post_parent()"

markdwhite markdwhite
11 jun 2021 05:37:59
3

Usa $post->post_parent para obtener el ID del post padre. Aquí $post es un objeto con propiedades.

25 abr 2013 10:35:21
Comentarios

Pude obtener el ID de la página de blog usando get_option('page_for_posts') pero no tuve éxito con tipos de contenido personalizados ya que $post->post_parent devuelve 0.

metalzade metalzade
25 abr 2013 11:09:40

$post->post_parent funciona en mi caso. Imprime tu objeto $post y verás que [post_parent] está ahí.

saifur saifur
25 abr 2013 14:42:57

Quizás quieras agregar global $post

Jack Jack
24 oct 2016 13:11:07