在Wordpress中传递和检索查询变量


16

我有两个作者页面,一个页面显示约5个帖子。然后,我尝试设置另一个页面,该页面将是他们的所有帖子。我创建了一个名为moreauthorposts.php的模板,并且试图将author变量传递给此页面。问题是如果我通过domain.com/more-author-posts?author=johndoe,它将被剥离。如何获取该值?在wordpress中甚至可能吗?我知道WP Rewrite正在不确定我的URL结构。

我试过了:

get_query_var('author')

并尝试阅读此书,但没有任何运气:

http://codex.wordpress.org/Query_Overview

有什么建议吗?

谢谢。

Answers:


21

我几乎可以确定它author是内置的,因此请使用author_more。您需要先将该var添加到query_vars。例:

// add `author_more` to query vars
add_filter( 'init', 'add_author_more_query_var' );
function add_author_more_query_var()
{
    global $wp;
    $wp->add_query_var( 'author_more' );
}

然后在您的more-author-posts.php模板上这样调用它:

if ( get_query_var( 'author_more' ) )
{
    // do your stuff
}

更新资料

这适用于以下URl示例/用例:

http://example.com/index.php?author_more=value

但是,如果要将其用作精美的URl,则需要添加一个重写规则:

add_action('init','add_author_more_rewrite_rule');
function add_author_more_rewrite_rule()
{
    add_rewrite_rule(
        'more-author-posts/(\d*)$',
        'index.php?author_more=$matches[1]',
        'top'
    );
}

现在您可以像这样使用它

http://example.com/more-author-posts/value

好的,所以我将查询变量添加到functions.php中。然后将其他代码添加到我的更多作者帖子中。通过它们的正确URL结构是什么?我知道分页使用/ page / 2的格式,但是执行more-author-posts / more_author / johndoe似乎不起作用?
codeisforeva

我更新了答案
Bainternet'1

问题是我没有尝试将vars传递给index.php。我试图将它们传递给我开发的自定义模板,因为它看起来与索引完全不同。因此,如果我将值传递给moreauthor.php?author_more = johndoe ..这似乎不起作用。这里做错了吗?
codeisforeva

@בנייתאתרים看起来很清楚!@codeisforeva您不应该直接调用模板文件,对吗?index.php只是wordpress的根文件,每个重写规则都应通过该目录。
goldenapples

1
@codeisforeva:index.php重写规则index.php中的WordPress根目录中的,而不是index.php模板文件中的。您仍然可以通过挂钩template_include过滤器来选择应显示的模板。
Jan Fabry
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.