如何在Wordpress中仅显示某些类别

时间:2019-07-17 14:39:10

标签: php wordpress get categories

我正在Wordpress中工作,并实现了一些PHP以在页面上显示所有类别(按简码)。通过单击类别,它可以链接到显示该类别所有帖子的新页面。

如何仅显示某些类别,例如按类别的ID和/或名称显示?

一个帖子有两个类别( a :A和 B 或A& C )。因此,一个帖子 a 始终具有一个类别A,而一个类别 B C

这是我的代码:

-- Trying to put the Original into OPENQUERY.
''"''+ lnv.Name +''"'' As [Column Name]

例如,我在前几行尝试了此操作,但没有成功:

function swerft_categories(  ){
  ob_start(); 
  $categories = get_categories();

  echo '<div class="swerft_cat">';
  foreach($categories as $category) {
    echo '<div class="swerft_cat_single col-lg-3 col-md-3 col-sm-6 col-xs-12">';

      echo '<div class="swerft_cat_single_inner">';

        $thim_group_custom_title_bg_img = get_term_meta( $category->term_id, 'thim_group_custom_title_bg_img', true );
        if ($thim_group_custom_title_bg_img) {
          $image_id = $thim_group_custom_title_bg_img['id'];

          if ($image_id) {
            $post_thumbnail_img = wp_get_attachment_image_src( $image_id, 'full' );
            echo '<a href="' . get_category_link($category->term_id) . '"><img src="' . $post_thumbnail_img[0] . '" alt="' . $category->name . '" /></a>';
          }
        }

        echo '<a href="' . get_category_link($category->term_id) . '"><h5>'. $category->name .'</h5></a>';
        echo '<p>'. $category->description . $category->count . '<span> Seminare </span>' . '</p>';

      echo '</div>';

    echo '</div>';
  }
  echo '</div>';

  return ob_get_clean();
}
add_shortcode( 'swerft_categories', 'swerft_categories' );

1)我只想显示一个特定的关系。假设:只有 a 的关系:A和 B 2)我希望计数仅根据上述关系显示帖子的数量。 3)通过单击基于此关系的类别,我当然只希望显示那些帖子。

1 个答案:

答案 0 :(得分:0)

与同事一起,我能够找到上述问题的解决方案。参见下面的代码,希望它可以对某人有所帮助;并感谢任何考虑此任务的人;)

// Function to only show individual seminars after click on category on category-page

function swerft_filter_posts_open_individual_seminare( $query ) {
  $offene_seminare = isset($_GET['offene_seminare']) ? boolval($_GET['offene_seminare']) : false;
  $individual_seminars_category_id = 91;
  if($query->is_category() && $query->is_main_query()) {
    if ($offene_seminare) {
      $query->set( 'category__not_in', $individual_seminars_category_id );
    } else {
      $query->set( 'category__in', $individual_seminars_category_id );
    }
  }
}
add_action( 'pre_get_posts', 'swerft_filter_posts_open_individual_seminare' );

// Function to only count individual seminars in overview

function swerft_count_individual_seminars_in_category($category_id) {
  $individual_seminars_category_id = 91;
  $query_args = array(
    'post_type'       => 'post',
    'category__and' => array($individual_seminars_category_id, $category_id)
  );
  $query = new WP_Query( $query_args );
  $count = $query->found_posts;
  return $count;
}