【问题标题】:custom query to get posts (Wordpress)获取帖子的自定义查询(Wordpress)
【发布时间】:2013-09-15 19:28:27
【问题描述】:

我想创建自定义链接,例如

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' );

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

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

另外,我正在使用插件“高级自定义字段”,并添加了一个默认值为“Z”的字段“优先级”。 我打算为优先级字段中的每个帖子分配一个字母,以便页面上的结果根据“优先级”排序:顶部优先级为“A”的帖子,其次是优先级为“B”的帖子,依此类推上..

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    首先你没有正确使用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,则需要添加 2 行,通过它的 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 查询中使用参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多