如何编辑此代码以获得实现页面中的类别?

时间:2017-08-02 作者:Mohamed Yasin

我正在构建我的类别的一部分。php将从自定义帖子类型“product”中获取帖子,并确定哪些帖子将包含在类别中

所发生的是,它从自定义帖子类型“product”中获取所有帖子,即使它不在类别中。

<h1><?php echo  single_cat_title( \'\', false ) ;  ?></h1>
<h3>products in this category</h3>
<?php
  global $post;
  $args = array( \'post_type\'=> \'product\');
  $myposts = get_posts( $args );
  foreach( $myposts as $post ) : setup_postdata($post); ?>

  <div class="post-row item">
    <div class="left-meta-post">
      <div class="post-date"><span class="day"><?php the_time(\'d\') ?></span><span class="month"><?php the_time(\'M\') ?></span></div>
      <div class="post-type"><i class="fa fa-picture-o"></i></div>
    </div>
    <h3 class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    <div class="post-content">
      <p> <?php the_excerpt(); ?>  <a class="rtl-read-more" href="<?php the_permalink(); ?>"><i class="fa fa-angle-left"></i> Read More . . </a></p>
    </div>
  </div>
  <?php endforeach; ?>
那么,需要进行哪些编辑才能修复此问题?

1 个回复
SO网友:PayteR

我注意到的第一件事是,您使用了一些模糊的WP循环标记

foreach( $myposts as $post ) : setup_postdata($post); 
请使用标准标记循环WP\\U查询类

<?php $query = new WP_Query( $args ); ?>
<?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>

https://codex.wordpress.org/The_Loop

接下来,代码中的问题是,您甚至不尝试从某个类别获取帖子。如果您的分类法是标准类别,那么您将使用标准“cat”参数获得它:

$query = new WP_Query( array( \'cat\' => 4 ) );

https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

如果是自定义分类法,则需要使用分类法参数调用它:

$args = array(
    \'post_type\' => \'post\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'people\',
            \'field\'    => \'slug\',
            \'terms\'    => \'bob\',
        ),
    ),
);
$query = new WP_Query( $args );

https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

结束