Come ottenere l'ID del genitore di un post?

25 apr 2013, 10:06:19
Visualizzazioni: 17.6K
Voti: 3

Ho un template che visualizza i post del blog (Pagina Blog), apro uno dei post che utilizza il template single.php. Ora come posso ottenere l'ID del suo genitore che è la (Pagina Blog)?

Devo specificare che voglio usare questo ID per ottenere il valore del meta box della pagina blog in single.php.

Lo stesso vale per un custom post type, ad esempio 'progetto', dove un page template elenca i post del progetto (Pagina Progetti) e single-project.php per il singolo post di progetto. In questo caso voglio ottenere l'ID della (Pagina Progetti) in single-project.php.

11
Commenti

Puoi spiegare la situazione, perché vuoi ottenerlo?

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

L'ID genitore del post non è una pagina del blog, ma un altro post. Non c'è alcuna relazione tra il post e la tua pagina del blog,

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

@VinodDalvi Ho modificato la domanda.

metalzade metalzade
25 apr 2013 10:24:08

@RajeevVyas quindi stai dicendo che non c'è modo di ottenere l'ID della pagina blog?

metalzade metalzade
25 apr 2013 10:24:56

@metalzade naturalmente no, prova a usare get_option('page_for_posts') o consulta la funzione is_home dal codex per riferimento.

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

+1 per aver aggiornato la tua domanda con maggiori informazioni. Ancora non sono sicuro di cosa intendi. Se hai un custom post type, e questo è impostato come 'hierarchical' allora puoi usare get_post( $post->post_parent ). Se invece stai usando una 'page' per gli articoli del blog nelle impostazioni, allora get_option('page_for_posts') ti darà l'ID. Maggiori informazioni e magari un frammento di codice ci aiuteranno a darti una risposta migliore.

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

@MereDevelopment Grazie ragazzi, get_option('page_for_posts') ha funzionato per la pagina del blog, ma per il post type personalizzato $post->post_parent restituisce 0 il che non è corretto. Ho modificato nuovamente la domanda.

metalzade metalzade
25 apr 2013 11:06:50

Stai confondendo concetti separati. Il parent di un custom post type gerarchico non è la stessa cosa della pagina in cui i post vengono visualizzati.

anu anu
25 apr 2013 11:22:48

@anu OK, ora ho capito, ma pensi ci sia un modo per ottenere quell'ID della pagina in single-project.php?

metalzade metalzade
25 apr 2013 11:47:46

@metalzade non c'è alcuna relazione a meno che non la definisci esplicitamente. Ad esempio, se avessi 2 pagine che elencano gli stessi articoli, quale dovrebbe essere il 'genitore'? Quindi, puoi o hardcodarlo, definirlo nella configurazione, o fare qualche assunzione implicita (ad esempio cercando la pagina che utilizza un particolare template)

anu anu
25 apr 2013 12:00:38

Non stai cercando dei breadcrumb?

brasofilo brasofilo
25 apr 2013 15:01:12
Mostra i restanti 6 commenti
Tutte le risposte alla domanda 2
1

WordPress 5.7 introduce una nuova funzione helper per recuperare più facilmente l'ID del post genitore: get_post_parent()

Questa può essere utilizzata anche in combinazione con has_post_parent(), quindi potresti avere qualcosa di simile a:

<?php if ( has_post_parent() ) : ?>
    <a href="<?php the_permalink( get_post_parent() ); ?>">
        <?php
        echo sprintf(
            esc_html__( 'Torna alla pagina genitore: %s', 'text-domain' ),
            get_the_title( get_post_parent() )
        );
        ?>
    </a>
<?php endif; ?>

Nota che queste funzioni accettano come parametro un "ID del post figlio", che per default è il post corrente.

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

10 feb 2021 23:09:25
Commenti

"Queste funzioni erano originariamente introdotte come get_parent_post() e has_parent_post() ma da allora sono state rinominate in get_post_parent() e has_post_parent()"

markdwhite markdwhite
11 giu 2021 05:37:59
3

Utilizza $post->post_parent per ottenere l'ID del genitore del post. Qui $post è un oggetto con proprietà.

25 apr 2013 10:35:21
Commenti

Sono riuscito a ottenere l'ID della pagina del blog con get_option('page_for_posts') ma senza successo nel post type personalizzato poiché $post->post_parent restituisce 0.

metalzade metalzade
25 apr 2013 11:09:40

$post->post_parent funziona per me. Stampa il tuo oggetto $post, poi vedrai che [post_parent] è presente.

saifur saifur
25 apr 2013 14:42:57

Potresti voler aggiungere global $post

Jack Jack
24 ott 2016 13:11:07