获取帖子的自定义查询(Wordpress)

时间:2013-09-11 16:43:54

标签: wordpress-plugin wordpress

我想创建像

这样的自定义链接

mydomain.com/custom_page/cat=ABC&tag=XYZ

因此,当用户点击链接时,他/他可以看到“ABC”类别中标签为“XYZ”的所有帖子

为此,我使用以下代码

创建了一个自定义模板
<?php
/*
Template Name: MyCustomTemplate
*/
?>

<?php get_header(); ?>
global $wp_query;
get_query_var( 'cat' );
get_query_var( 'tag' );
   

我不知道如何使用“XYZ”标签查询“ABC”类别中的帖子

我查了http://codex.wordpress.org/Function_Reference/query_posts#Passing_variables_to_query_posts 但是那里显示的例子使用'静态'值。 我需要使用动态值进行查询:通过URL传递。

此外,我正在使用插件“高级自定义字段”,并添加了一个字段'priority',其中的defult值为'Z'。 我打算在优先级字段中为每个帖子分配一个字母,以便按照“优先级”对页面上的结果进行排序:顶部优先级为“A”的帖子,后面是优先级为“B”的帖子等等上..

1 个答案:

答案 0 :(得分:0)

首先,您没有正确使用get_query_var()。这是一个PHP函数,需要在php标签内,此函数返回您需要的信息,因此您必须将其保存在变量中。对于您的示例,您应该像这样使用它:

<?php
/*
Template Name: MyCustomTemplate
*/
?>

<?php get_header();?>
<?php global $wp_query;
$gotten_cat = get_query_var( 'cat' );
$gotten_tag = get_query_var( 'tag' ); ?>

现在,如果您输入mydomain.com/custom_page/cat=ABC&tag=XYZ这样的链接,那么$gotten_cat将具有值“ABC”,而$gotten_tag将具有值=“XYZ” 。 在某些时候,你需要决定“ABC”是类别slug还是类别id,与标签

相同

现在,如果我们假设ABC是类别id并且XYZ是标签id(如果它是slug,则有两行要添加,其中你通过它的slug获得cat / tag id)代码就像这样:

$args = array(
        'cat'      => $gotten_cat, // this uses cat id for cat slug use 'category_name'
        'tag_id'   => $gotten_tag, //this uses tag id for tag slug use 'tag'
        'meta_key' => 'priority',
        'orderby'  => 'meta_value', 
        'order'    => 'ASC',
       );

// run the query
query_posts( $args );

这应该查询来自cat ABC和标签XYZ的帖子,并设置meta_key优先级,帖子将按meta_value(A,B,C ...)升序排序。

请阅读与WP_Query相关的wp codex页面,您将学习如何使用wordpress查询参数。