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

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

4

1 回答 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,则需要添加 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 codex 页面,WP_Query您将了解如何在 wordpress 查询中使用参数。

于 2013-10-16T21:48:40.700 回答