Mostrar postagens por etiqueta na página

Estou tentando criar uma página avançada do WordPress que mostra o conteúdo regular, além de uma segunda seção na mesma página que mostra as últimas postagens da tag X. Por exemplo, uma página é criada sobre “gatos”, tem imagens, conteúdo, etc. Depois da palavra, eu gostaria de exibir as últimas postagens X marcadas com “gatos”. Isso é possível sem usar plugins e sem criar um modelo de página personalizado para cada página?

Talvez seja possível com o recurso de campos personalizados e vários loops. Por exemplo, obtenha X quantidade de postagens de um campo personalizado com o valor “gatos”. Eu tenho lutado por isso por um tempo agora, não consigo encontrar uma solução que não implique criar um modelo para cada página.

Obrigado!

Solutions Collecting From Web of "Mostrar postagens por etiqueta na página"

Isso deve fazer o trabalho. Ele verificará as postagens que foram marcadas com o título da página atual. Não há necessidade de usar if (have_posts()): em um modelo de página: se o modelo for chamado, será porque existe uma publicação 🙂

 
< ?php while (have_posts()) : the_post(); $page_title = strtolower(get_the_title()); the_title('

',''); ?>

< ?php the_content(); ?>

< ?php endwhile;?>

Se preferir usar o meta personalizado para adicionar a ‘tag’ à página (em vez de apenas usar o título), você poderia adicionar uma checkbox de meta personalizada à página como assim. Adicione o seguinte código às suas funções.php (nb: isso adicionará a checkbox meta a todas as páginas)

 /** register the meta box */ function my_theme_add_meta_boxes() { global $post; add_meta_box( 'my-theme-meta', 'Choose a tag', 'my_theme_print_page_meta', 'page', 'normal', 'high' ); } add_action('add_meta_boxes', 'my_theme_add_meta_boxes'); /** Add extra meta to the page */ function my_theme_print_page_meta() { global $post; $page_tags = get_post_meta($post->ID, '_page-tags', true); ?>   < ?php } /** Save post meta */ function my_theme_save_custom_meta() { global $post; // Stops WP from clearing post meta when autosaving if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { return $post->ID; } if (isset($_POST['page-tags'])) { $clean = sanitize_text_field($_POST['page-tags']); update_post_meta($post->ID, '_page-tags', $clean); } } add_action('save_post', 'my_theme_save_custom_meta'); 

Então o código da sua página.php pode ser assim:

 
< ?php while (have_posts()) : the_post(); $page_tags = get_post_meta($post->ID, '_page-tags', true); the_title('

','

'); ?>

< ?php the_content(); ?>

< ?php endwhile;?>

< ?php if ($page_tags): ?> < ?php endif; // There are 'page tags' ?>

Faça um WP_Query na segunda parte da sua página:

  
< ?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

< ?php the_title(); ?>

< ?php the_content(); ?>

< ?php endwhile; endif;?>

< ?php $wp_query = new WP_Query(array( 'post_type' => 'post' ));?> < ?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

< ?php the_title(); ?>

< ?php the_content(); ?>

< ?php endwhile; endif;?>

Atualmente, estou trabalhando com um tema no WordPress e, na verdade, estou fazendo essas coisas, então funciona!

Já há respostas acima sobre como usar loops, então não adicionarei mais sobre wp get posts recentes ou Taxonomy Parameters .

Mas você pode querer considerar o envolvimento do seu código em um Widget, o que tornaria a adicionar aos seus modelos existentes um pouco mais fácil.