O problema com este código é que a consulta está sendo alterada e current_page_item
está sendo perdido. Esta é a parte que causa problemas.
$post = get_post( $getid );
setup_postdata( $post );
Se você comentar essas duas linhas, verá que current_page_item
aparece.
Existem também alguns problemas secundários com este código que não influenciam o problema principal.
-
<p></p>
não deve existir como um elemento filho de<ul>
. Somente<li>
é permitido. -
<h3>...</h3>
também não deve existir como um elemento filho de<ul>
pelas mesmas razões que # 1. - A instrução
if
definindo a classe CSS para o link "Biografia" retornará true em qualquer página única, não apenas na página pai. -
wp_list_pages()
exibe uma lista de pares de tags<li>...</li>
, portanto, não precisa ser envolvida com outro par de tags<li>...</li>
.
O código a seguir corrige todos os problemas.
<?php
$getid = get_post_top_ancestor_id();
global $post;
?>
<h3><?php echo get_the_title( $getid );?></h3>
<ul>
<?php
if ( $post->ID == $getid ) {
$pg_li .= "current_page_item";
} else {
$pg_li .= "page_item";
}
?>
<li class="<?php echo $pg_li; ?>">
<a href="<?php echo get_permalink( $getid ); ?>">BIOGRAPHY</a>
</li>
<?php
$args=array(
'post_type' => 'artists',
'child_of' => $getid,
'sort_column' => 'menu_order',
'hierarchical' => 1,
'title_li' => __('')
);
wp_list_pages( $args );
?>
</ul>