Come ottenere l'ID del post corrente di un custom post type in un loop usando il template single-{custom type}.php?
Ho un template per custom post type dove sto ciclando attraverso tutti i post. Quello che sto cercando di fare è ottenere l'ID del post corrente nel loop quando vado nella pagina del mio custom post.
Quindi ho provato a verificare se il permalink è lo stesso per il post all'interno del loop, se è lo stesso otterrò l'ID del post corrente nel loop.
Ecco il codice che ho provato
Prima provo a ottenere il permalink all'esterno per controllarlo dentro il loop
$permalink = get_permalink();
Ora ho ottenuto il permalink del post corrente e voglio ottenere l'ID del post corrente
if($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
if(the_permalink()==$permalink){
echo get_the_ID();
}else{
echo "non trovato";
}
endwhile;
wp_reset_postdata();
endif;
Ho provato queste cose in single-{custom-post-name}.php
e ottengo non trovato
.
Qualcuno può suggerirmi un modo per ottenere l'ID del post corrente in questo template?
Quindi hai due loop: il loop principale e il secondo che utilizza $query
.
Vuoi confrontare se ad un certo punto del tuo secondo loop c'è una corrispondenza tra il post corrente (all'interno del loop) e il post elaborato all'interno del loop $query
.
Ho capito bene?
Invece di controllare i permalink, proporrei di verificare gli ID.
Quindi nel primo loop crei una variabile con l'ID del post corrente:
$current_post_id = $post->ID;
e nel tuo secondo loop fai semplicemente il confronto:
if($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
if( $current_post_id === $post->ID ) {
echo $post->ID;
} else {
echo "non trovato";
}
endwhile; wp_reset_postdata(); endif;
Non sono sicuro che sia quello che stai cercando, facci sapere.
PS: Dovrei aggiungere di usare un nome più specifico per la tua query, solo per evitare collisioni di nomi da un plugin o altro, come $my_prefix_query

Hai ragione, stavo cercando la stessa cosa. In precedenza non sapevo come utilizzare il ciclo predefinito have_post. Pensavo che avrebbe recuperato tutti i post. Ma quando ho provato, ho capito che avrebbe recuperato solo il post corrente. Quindi ho usato get_the_id()
e ho assegnato una variabile, poi l'ho utilizzata nel ciclo di query. Grazie @Simon
