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

방금 ​​찾은 것, 내가 갖고있는 것에 가깝습니다. 코드에서 이해할 수없는 유일한 것은 왜 분류 체계를 두 번 얻는 것입니까? 용어에서 처음으로 그리고 그것보다 tax_query 다시. 아직도 노력에 감사드립니다! – Marc