Digite o tipo de publicação personalizada somente se contiver outro tipo de postagem personalizada

Atualmente, tenho um tipo de postagem personalizado chamado “blog”. No registro, cada usuário obtém automaticamente um post “blog” vinculado com seu ID de usuário.

Este tipo de postagem personalizado procura outro tipo de publicação chamado “artigos”. Esses artigos são escritos pelo usuário e, em seguida, mostraram no tipo de postagem personalizado do “blog”.

Agora, eu gostaria de mostrar uma lista de X tipo de postagem personalizado “blog” mais recente, mas apenas se eles tiverem no mínimo um “artigo”, mas não consigo encontrar nenhuma maneira de fazê-lo …

Agradeço antecipadamente por sua ajuda e tenha um bom dia.

Solutions Collecting From Web of "Digite o tipo de publicação personalizada somente se contiver outro tipo de postagem personalizada"

Eu finalmente encontrei uma solução para isso, aqui vai:

Eu usei “get_user” com uma function “has_custom_post_type” para consultar todos os usuários com pelo menos um artigo escrito e depois adicionei o link ao CPT do blog, adicionando “/ blog / display_name” no href.

Aqui vai o código

 < ?php $blog_url = get_bloginfo('home'); $users_number = 0; $blogusers = get_users('orderby=registered&order=DESC'); foreach ($blogusers as $user) { $cpt_count = has_custom_post_type( $user->ID, 'article' ); if (!empty($cpt_count) ) { $users_number ++; if ($users_number < = 5) { echo '
  • Le blog de ' . $user->display_name . ''; } } } ?>
  • Obrigado a todos por sua ajuda.

    Não testei isso, mas na minha cabeça funciona perfeitamente! O que fazemos é colocar um filtro pre_get_posts no nosso arquivo de funções e, em seguida, obter o usuário atual. Se o usuário não estiver registrado, abandone. Se o número de postagens do usuário não for superior a 0, abandone. Se não estivermos no arquivo de postagem, deixe cair. Se todas as 3 condições forem verdadeiras , replaceemos nossos artigos de blog padrão com os usuários.

     function user_posts_filter($query){ $userID = get_current_user_id(); if($userID != 0 && count_user_posts($userID) > 0 && is_post_type_archive('blog')){ $query->set('post_type', 'articles'); $query->set('author', $userID); } } add_action('pre_get_posts', 'user_posts_filter'); 

    Espero que funcione para você!