WordPress previous_post_link exclui posts com várias categorias

Eu tenho uma página de single-news no WordPress, onde eu estou fazendo o loop sobre todas as postagens e atualizando os botões anterior e seguinte para excluir certas categorias com base na ID da categoria da publicação atual.

Aqui está o que eu tenho:

           

O problema que estou tendo é que, se uma postagem tiver 2 categorias, por exemplo, 6 e 7, ela exclui essa publicação do link, enquanto que se a postagem tiver apenas uma categoria, por exemplo, 6, ela não a exclui.

Como configurá-lo para que NÃO exclua qualquer postagem que tenha categoria 7, independentemente de ter várias categorias.

Solutions Collecting From Web of "WordPress previous_post_link exclui posts com várias categorias"

O que você precisa fazer é alterar o argumento excluded_terms das funções previous_post_link e next_post_link que você chamou de $catagory . Basta remover todos os IDs de categoria da sua postagem atual da matriz excluded_terms . Certifique-se de definir uma série de categorias que você não deseja exibir como você fez no seu exemplo acima.

 $catagory = array(3,5,6,4,1) // array of category ids you don't want to be displayed 

O próximo passo é encontrar todas as IDs de categoria da sua postagem atual e colocá-la em uma nova matriz.

 $post_category_objects = get_the_category(); // returns an array of WP_Term objects $post_category_ids = array(); foreach($post_category_objects as $pco){ array_push($post_category_ids, $pco->term_id); // adds the post's category id to the $post_category_ids array } 

Em seguida, você precisa remover os IDs de categoria da postagem atual de $catagory (< - a matriz que contém os valores a serem excluídos das funções previous_post_link e next_post_link ).

Supondo que o post tenha as categorias 6 e 7, esses IDs categoria serão removidos de $catagory .

 // removes the current post's category ids from the $catagory-array foreach( $post_category_ids as $pci ){ $key = array_search( $pci, $catagory ); if( $key !== false ){ unset( $catagory[$key]); } } // rearranges the $catagory's keys $catagory = array_values($catagory); 

Coloque todo o código acima em sua declaração if e deve funcionar.