首页 文章

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

提问于
浏览
0

我想创建自定义链接

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但是那里显示的示例使用'static'值 . 我需要使用动态值进行查询:通过URL传递 .

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

1 回答

  • 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查询参数 .

相关问题