2015-04-27 27 views
16

mam skonfigurować moją niestandardowy typ pocztowy zwane „sektory”, korzystając z poniższego kodu:Gathering niestandardowe typy post przez tagów

register_post_type('sectors', 
    array(
     'labels' => array(
      'name'   => __('Sectors'), 
      'singular_name' => __('sectors'), 
     ), 
     'has_archive' => true, 
     'hierarchical' => true, 
     'menu_icon' => 'dashicons-heart', 
     'public'  => true, 
     'rewrite'  => array('slug' => 'your-cpt', 'with_front' => false), 
     'supports'  => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'revisions', 'page-attributes'), 
     'taxonomies' => array('your-cpt-type', 'post_tag'), 
    )); 
} 

To pozwoliło mi dodać „Tagi” na stronach typu custom post.

Teraz próbuję wyświetlić strony z niestandardowymi typami postów według niektórych tagów.

udało mi się to zrobić ze słupami, stosując następujący kod:

<?php 
    $args = array('tag_slug__and' => array('featuredpost1')); 
    $loop = new WP_Query($args); 
    while ($loop->have_posts()) : $loop->the_post(); 
?> 
<h5 class="captext"><?php the_title(); ?></h5> 
<hr> 

<div style="float: left; padding-right:20px;"> 
    <?php the_post_thumbnail('thumb'); ?> 
</div> 

<?php the_excerpt(); ?> 
<a href="<?php echo get_permalink(); ?>"> Read More...</a> 

<?php endwhile; ?> 
<?php wp_reset_query(); ?> 

ten dostanie wszystkie posty, które mają tag „featuredpost1”.

Jak to jest możliwe w przypadku niestandardowych typów wpisów?

EDIT/UPDATE:

To działa teraz, czy istnieje sposób mogę korzystać z tej funkcji na innej stronie? Na przykład na mojej stronie głównej otrzymuj posty za pomocą tagów, więc to, co jest aktualizowane na tej stronie, zostanie zaktualizowane na stronie głównej?

+0

Ktoś ma jakieś pomysły? –

+0

czy do swoich argumentów dodałeś '" post-type "=>" sectors "? –

+1

Na której stronie/szablonie robisz to. Czy naprawdę potrzebujesz niestandardowego zapytania –

Odpowiedz

12

Wordpress Query Parameters

Jeśli dodać ::

$args = array(
    'post_type' => array('sectors') //, 'multiple_types_after_commas') 
); 
$query = new WP_Query($args); 

lub

$query = new WP_Query('post_type=sectors'); 

To pomoże Ci kierować typ Twój komentarz zapytania.

To będzie wyglądać

$args = array(
    'tag_slug__and' => array('featuredpost1'), 
    'post_type' => array('sectors') 
); 
$loop = new WP_Query($args); 
while ($loop->have_posts()) : $loop->the_post(); 
+1

Dziękuję, to działało idealnie! Dziękuję również Zork za odpowiedź i Selva. –

2

rozwiązanie Cayce K będzie działać doskonale. Mam drugi sposób oferowania:

Po pierwsze: Dodaj niestandardowy typ wpisu do głównego zapytania. Możesz to osiągnąć, dodając kilka linii do swojej functions.php.

<?php 
add_action('pre_get_posts', 'add_my_post_types_to_query'); 
    function add_my_post_types_to_query($query) { 
     // Leave the query as it is in admin area 
     if(is_admin()) { 
      return $query; 
     } 
     // add 'sectors' to main_query when it's a tag- or post-archive 
     if (is_tag() && $query->is_main_query() || is_archive() && $query->is_main_query()) 
     $query->set('post_type', array('post', 'page', 'sectors', 'add_more_here')); 
     return $query; 
    } 
?> 

drugie: Po wykonaniu więc można użyć archive.php Z tag.php lub grupę tag-myTagName.php w temacie pokazać Archiwum-stronę dla tego znacznika w tym niestandardowego typu wpisu 'sektorach. Nie musisz ustawiać specjalnego zapytania, po prostu dodaj link do żądanego tagu do jednego z menu - standardowa pętla zrobi resztę.

Podpowiedź:

Po prostu chcesz utworzyć archiwum-page dla pełnego Typ niestandardowy Poczty sektorach "można również użyć wtyczki WP Post Type Archive Link.

+0

miło po wyjęciu z pudełka myślenia. to jest dobra zabawa. dziękuję za opublikowanie tej odpowiedzi! –

1

Jeśli szukasz niestandardowego typu post, nazwę znacznika oznacza, musisz określić, że w argumentach zapytanie:

<?php $query = new WP_Query(array("post-type" => "sectors", "tag" => "featuredpost1")); 

    while ($query->have_posts()) : $query->the_post(); 

    the_title(); 

    endwhile; ?> 

Może to pomoże ...