Verifique se um termo de taxonomia personalizado publicou postagens?

Estou fazendo um tema de revista para um cliente e usando uma taxonomia “problema” personalizada. Há uma nova questão a cada semana, e também tenho uma function que é o último problema. Mas o editor cria um novo problema alguns dias antes dos artigos para esse problema serem publicados. Minha function atual usa max () para encontrar o maior problema numerado:

function get_issues() { $output = array(); $hlterms = get_terms('issue', array('hide_empty' => false)); foreach($hlterms as $term){ array_push($output, $term->name); } return $output; } function get_current_issue() { $current_issue_no = max(get_issues()); $current_issue = get_issue_by_number($current_issue_no); // Not important for question return $current_issue; } 

Todos os termos em ‘questão’ são números (como strings) como 101.402, etc. Eu uso o número mais alto para retornar um object de Problema, mas isso não é realmente importante aqui, porque se eu conseguir o número correto, eu posso simplesmente passar isso para a function de instanciação já existente get_issue_by_number() .

Então, como posso descobrir se esse “problema” que é retornado publicou postagens? A idéia é que a function get_current_issue() apenas retornaria o último problema que a editora considerou ativa. Eles criam artigos de antemão e dão-lhes uma data de publicação alguns dias a partir do tempo de upload. Então, idealmente, eu poderia escrever uma function que retornaria o problema 101, mesmo que 102 existam porque 102 não está atribuído a nenhuma postagem ativa. Mas então, uma vez que essas postagens se tornaram ativas na data definida, a function começaria a retornar 102. Todos os pensamentos são bem-vindos, felizes em mudar minha abordagem se alguém tiver uma maneira melhor de fazer isso.

Então, um exemplo rápido do que eu esperaria realizar:

Eu tenho dois “problemas”, 123 e 124. Eu criei 123 há algum tempo e já atribuí postagens publicadas a ele. Mas recentemente criei recentemente 124 e ainda não existem postagens publicadas. Minha function deve retornar o problema 123 não 124, embora 124 seja tecnicamente mais recente. O fato de o problema 123 ter um número de postagens publicadas atribuídas, enquanto 124 não possui nenhum determinaria esse resultado. Então, uma vez que eu publico uma postagem atribuída à questão 124, ela se tornaria a questão atual.

Solutions Collecting From Web of "Verifique se um termo de taxonomia personalizado publicou postagens?"

 function get_issues() { $output = array(); $hlterms = get_terms('issue', array('orderby' => 'id', 'order' => 'DESC','hide_empty' => false)); foreach($hlterms as $term){ array_push($output, $term->term_id); } return $output; } 

Isso retornaria o ID do termo conforme o recente e depois sua segunda function começará a iterar para obter as postagens para a última edição.

 function get_posts_for_current_issue() { $total_issues = get_issues(); foreach($total_issues as $issue_id){ $args = array( 'post_type' => 'post', 'status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'issue', 'field' => 'id', 'terms' => $issue_id ) ) );//end of args $current_issue_posts = get_posts($args); if(!is_wp_error($current_issue_posts) && count($current_issue_posts)>0){ return $current_issue_posts; //will terminate the loop if posts found } }//end of foreach }//end of function 

Você pode precisar ativar o WP_DEBUG, pois não posso testar o código.

Eu sugeriria usar 'field'=>'term_id' vez de 'field'=>'id' . Em relação à página wordpress do Codex para get_terms (), seria o caminho certo e também esse foi o meu problema durante o teste.

Meu exemplo de código (para verificar se o termo tem postagens publicadas):

 function check_term_posts($tax_slug, $term_id) { $args = array( 'post_type' => 'post', 'status' => 'publish', 'tax_query' => array( array( 'taxonomy' => $tax_slug, 'field' => 'term_id', 'terms' => $term_id ) ) ); $term_query = new WP_Query($args); $term_posts_count = $term_query->found_posts; if( $term_posts_count>0 ){ return true; } else { return false; } } 
 if (get_term($term->term_id, 'taxonomy')->count > 0 ) { }