不同的WP查询依赖于类别

时间:2017-08-26 10:20:39

标签: php wordpress wordpress-theming custom-wordpress-pages

我创建了一个页面,根据类别列出不同的课程。普通查询有效:

$args=array(
          'post_type' => 'post',
          'post_status' => 'publish',
          'category_name' => 'raid'
        );

      //$courses_query = null;
  $the_query = new WP_Query( $args );

但上面的代码意味着每次添加新类别时都会创建另一个模板,这意味着复制代码并更改页面的一部分。该页面将是domainname.com/courses/sdi-courses,每次网址都会针对每个类别进行更改。

'category_name' => 'sdi'// this will change to raid, padi etc.

这是我正在使用的代码。

<?php

  // The Query
        if (is_category('sdi-courses')) { // page slug
            $args=array(
              'post_type' => 'post',
            'post_status' => 'publish',
            'category_name' => 'sdi' // slug of category
          );
        } else (is_category('raid-courses')) {
            $args=array(
              'post_type' => 'post',
            'post_status' => 'publish',
            'category_name' => 'raid'
          );
        } 

       $the_query = new WP_Query( $args );
?>

他只会有一些,但必须有一个更好的方法。我试过上面的代码,但它不起作用。我想,一旦获得了$ args = array的正确信息,它就会从if语句返回的内容中找到它。

任何帮助都会很棒,我不会做很多WP或PHP,所以我在努力解决这个问题。

3 个答案:

答案 0 :(得分:0)

试试此代码

 $cat = get_the_category();
 $args=array(
   'post_type' => 'post',
   'post_status' => 'publish',
   'category_name' => $cat,
);

//$courses_query = null;
$the_query = new WP_Query( $args );

当前的类别名称将填入$ cat变量。

希望这可以解决问题。

答案 1 :(得分:0)

您可以使用当前的帖子ID获取特定的帖子类别。

请检查以下代码:

global $post;
$postcat = get_the_category( $post->ID ); // You will get category as array

echo '<pre>';print_r($postcat) // print array to check what will you getting.
$postcat[0]->term_id  // you will get ID of the category.
$postcat[0]->name //  you will get name of the category.

希望,这对你有所帮助。感谢。

答案 2 :(得分:0)

如果你在某个页面中使用它,那么你总是可以创建一个函数并将参数作为类别名称传递并在不同的页面中使用

 function abc($cat) {
 $args=array(
      'post_type' => 'post',
      'post_status' => 'publish',
      'category_name' => $cat
    );

  //$courses_query = null;
 $the_query = new WP_Query( $args );
}