2017-07-31 2 views
1

J'ai donc la requête suivante pour afficher les publications sur un modèle de page.Le champ de catégorie personnalisée Wordpress renvoie les catégories de publications correspondantes

 $wp_query = new WP_Query(); $wp_query->query('category_name=specials&posts_per_page=2' . '&paged='.$paged); 

Où est ont CATEGORY_NAME = promos je voudrais promos être un champ dynamique informé/prise d'un champ personnalisé sur la page ... de sorte que la page peut avoir un champ personnalisé 'catégorie' et sa valeur, je peux taper pour être spéciaux par exemple. Par conséquent, la page affichera tous les messages avec la catégorie correspondant à ce que j'ai tapé dans la valeur du champ client ... Est-ce possible?

+0

Vous essayez donc de répliquer les fonctionnalités de catégories/archives déjà existantes avec les vôtres? Pourquoi? – CBroe

Répondre

1

Oui, affecter la valeur du champ personnalisé à une variable et l'utiliser dans la requête comme indiqué ci-dessous:

$custom_field = //get custom field value 

$wp_query = new WP_Query(); $wp_query->query('category_name='.$custom_field.'&posts_per_page=2' . '&paged='.$paged); 
+1

$ custom_field = get_post_meta (get_the_ID(), 'category', true); $ wp_query = new WP_Query(); $ wp_query-> query ('category_name ='. $ champ_personnalisé. '& posts_per_page = 2'. '& paged ='. $ paged); Un grand merci Neil, c'est ce dont j'avais besoin. Voici la ligne de champ personnalisée que j'ai utilisée qui fonctionne bien! –

1

Comment obtenir la catégorie post sage en utilisant le code ci-dessous?

Ajouter des catégories id et slug taxonomie dans l'argumentation

<?php 
$post_type = 'post'; 
$page_paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'type'   => $post_type, 
    'post_status' => 'publish', 
    'posts_per_page' => 6, 
    'paged'   => $page_paged, 
    'caller_get_posts' => -1, 
    'orderby'  => 'name', 
    'order'   => 'DESC', 
    'pad_counts' => false, 
    'hierarchical' => 1, 
    'hide_empty' => 0, 
    'tax_query'    => array(
     array(
      'taxonomy' => 'your taxonomy slug', 
      'field' => 'id', 
      'terms' => 'your category id' 
     ) 
    ), 
); 

$loop = new WP_Query($args); 

while (have_posts()) : the_post(); 
    the_title('<h2>', '</h2>', true); 
    the_content(); 
endwhile; // end of the loop. 

wp_reset_query(); 
?> 
+0

Merci Shital, c'est une bonne solution. –

+0

Bienvenue! Heureux d'aider :) –

0

Merci à Neil pour une réponse rapide

Voici le bloc de travail plein de code.

Sur la page, ajoutez un champ personnalisé 'catégorie', puis assurez-vous que la valeur de ce champ personnalisé correspond aux catégories de postes qui renverront ces messages sur la page.

<?php // Display blog posts with category filter from custom field 
    $temp = $wp_query; $wp_query= null; 
    $custom_field = get_post_meta(get_the_ID(), 'category', true); 
    $wp_query = new WP_Query(); $wp_query->query('category_name='.$custom_field.'&posts_per_page=2' . '&paged='.$paged); 

    $wp_query = new WP_Query(); $wp_query->query('category_name=specials&posts_per_page=2' . '&paged='.$paged); 
    while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 

    <h2><a href="<?php the_permalink(); ?>" title="Read more"><?php the_title(); ?></a></h2> 
    <?php the_excerpt(); ?> 

    <?php endwhile; ?> 

    <?php if ($paged > 1) { ?> 

    <nav id="nav-posts"> 
     <div class="prev"><?php next_posts_link('&laquo; Previous Posts'); ?></div> 
     <div class="next"><?php previous_posts_link('Newer Posts &raquo;'); ?></div> 
    </nav> 

    <?php } else { ?> 

    <nav id="nav-posts"> 
     <div class="prev"><?php next_posts_link('&laquo; Previous Posts'); ?></div> 
    </nav> 

    <?php } ?> 

    <?php wp_reset_postdata(); ?>