0

現在のウェブサイトでは、私は次の機能を構築しています。Wordpressで選択したカスタムタクソノミーに基づいてカスタム投稿を表示する

問題をよりよく理解するための現状。

ブログと呼ばれるページがあります。このページには、リスト内のすべてのブログ(投稿)が表示されます。投稿にはすべてのカテゴリがあります。ユーザーはカテゴリを選択できます。ユーザーがそれをクリックすると、ユーザーはcategory.phpに行き、その特定のカテゴリを持つすべての投稿を表示します。

カスタムポストタイプと同じシナリオを作成したいのですが。私はテンプレート部分を持っています。 'offer-list-template.php'

offer-list-template.php(ここで私はすべてのオファーを取得して表示します);

<?php 
     // set up or arguments for our custom query 
     $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
     $query_args = array(
     'post_type' => 'Offers', 
     'posts_per_page' => 10, 
     'paged' => $paged 
    ); 
     // create a new instance of WP_Query 
     $the_query = new WP_Query($query_args); 
    ?> 

<?php if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); // run the loop ?> 
    <?php 

    //$objectData is used in post-listing-item.php 

    $objectData->title = get_the_title($post); 
    $objectData->content = get_the_content($post); 
    $objectData->permalink = get_the_permalink($post); 
    $objectData->thumbnail = get_the_post_thumbnail($post); 
    $objectData->posttype = get_post_type($post); 

    include(locate_template('template-parts/post-listing-item.php')); 
    ?> 
<?php endwhile; ?> 

同じファイルには、カテゴリを示す脇の下があります。 offer_categoryはタクソノミースラッグです。

<?php $terms = get_terms('offer_category'); 
    foreach ($terms as $term) { 

     // The $term is an object, so we don't need to specify the $taxonomy. 
     $term_link = get_term_link($term); 

     // If there was an error, continue to the next term. 
     if (is_wp_error($term_link)) { 
      continue; 
     } 

     // We successfully got a link. Print it out. 
     echo '<li><a href="' . esc_url($term_link) . '">' . $term->name . '</a><span>('. $term->count . ')</span></li>'; 
    } 
    ?> 
    </ul 

結果は次のとおりです。ユーザーはそれが行くcategorieをクリック

enter image description here

場合:分類オファー-category.php(分類学-slug.php)ここで

私は、選択されたカテゴリを持つ投稿(post_type-> offers)を表示する必要があります。カスタムポストタイプの

登録:

//Register Custom post type for Offers. 
function create_posttype_offer() { 
    $args = array(
    'labels' => array(
     'name' => __('Offers', ''), 
     'singular_name' => __('Offer'), 
     'all_items' => __('All Offers'), 
     'add_new_item' => __('Add New Offer'), 
     'edit_item' => __('Edit Offer'), 
     'view_item' => __('View Offer') 
    ), 
    'public' => true, 
    'has_archive' => true, 
    'rewrite' => array('slug' => 'Offers'), 
    'show_ui' => true, 
    'show_in_menu' => true, 
    'show_in_nav_menus' => true, 
    'capability_type' => 'page', 
    'supports' => array('title', 'editor', 'thumbnail'), 
    'exclude_from_search' => true, 
    'menu_position' => 70, 
    'has_archive' => true, 
    'menu_icon' => 'dashicons-star-filled' 
    ); 
    register_post_type('Offers', $args); 
} 
add_action('init', 'create_posttype_offer'); 

// Register Custom Categoeries for Custom Post Type Offers 
function taxonomies_offer() { 
$labels = array(
    'name'    => _x('Categories', 'taxonomy general name'), 
    'singular_name'  => _x('Category', 'taxonomy singular name'), 
    'search_items'  => __('Search Categories'), 
    'all_items'   => __('All Categories'), 
    'parent_item'  => __('Parent Category'), 
    'parent_item_colon' => __('Parent Category:'), 
    'edit_item'   => __('Edit Category'), 
    'update_item'  => __('Update Category'), 
    'add_new_item'  => __('Add New Category'), 
    'new_item_name'  => __('New Category'), 
    'menu_name'   => __('Categories'), 
    ); 

$args = array(
    'labels' => $labels, 
    'hierarchical' => true, 
    ); 

register_taxonomy('offer_category', 'offers', $args); 
} 
add_action('init', 'taxonomies_offer', 0); 

私は、デフォルトのポストタイプを使用して、私は次のコードを持っているcategory.phpは、選択したカテゴリで記事を表示しますです呼び出します。しかし、私はそれを管理する方法を見つけることができないカスタムポストタイプでは。理解することで

<?php if (have_posts()) : while (have_posts()) : the_post(); // run the loop ?> 
    <?php 

    //$objectData is used in post-listing-item.php 

     $objectData->title = get_the_title($post); 
     $objectData->content = get_the_content($post); 
     $objectData->permalink = get_the_permalink($post); 
     $objectData->thumbnail = get_the_post_thumbnail($post); 
     $objectData->posttype = get_post_type($post); 

     include(locate_template('template-parts/post-listing-item.php')); 
    ?> 
    <?php endwhile; ?> 

これは、ポストのリスト項目(ビュー)である

<article class="post-item"> 
    <figure> 
     <?php echo $objectData->thumbnail ?> 
    </figure> 

    <div class="content"> 
     <a href="<?php echo $objectData->permalink ?>"> 
      <h2><?php echo $objectData->title ?></h2> 
     </a> 

     <p><?php echo $objectData->content ?></p> 

     <div class="read-more-button"> 
     <a href="<?php echo $objectData->permalink ?>">read more 
     <span> 
      <svg class="next-arrow"><use xlink:href="#next-arrow" /></svg> 
     </span> 
     </a> 
     </div> 
    </div> 
</article> 

答えて

0

のために働きます!

URLからタクソノミーとスラッグを取得し、それをクエリに使用しました。

+0

タイトルを取得したばかりですが、オブジェクトから必要なものをすべて取得できます。 – Marc

0

、次のコードで読み込むために、すべてのカスタム分類ポストを持つためのクエリを持っている必要があります:

$terms = get_terms( 
     array(
      'taxonomy' => 'offer_category', 
      'hide_empty' => false, 
      ) 
     ); 

foreach ($terms as $term){ 
    $args = array(
      'post_type' => 'Offers', 
      'tax_query' => array(
           array(
            'taxonomy' => 'offer_category', 
            'field' => 'slug', 
            'terms' => $term->slug, 
           ), 
         ), 
      ); 
     $query = new WP_Query($args); 
     if($query->have_posts()): while($query->have_posts()): $query->the_post(); 

      the_title(); 
      the_content(); 
     endwhile; 
     wp_reset_postdata(); 
     endif; 
} 

希望これは私がそれを見つけたあなた

+0

私はちょうどそれが私が持っているものに近いです、私はあなたのコードから理解できない唯一のものは、あなたはタクソノミーを2回受けるのですか?最初の期間とそれよりもtax_query。まだ努力してくれてありがとう! – Marc

関連する問題