在更多页面上保留自定义URL参数

时间:2010-11-28 作者:wpStudent

我创建了一个自定义URL参数,用于根据投票分数对帖子进行排序。我有一个“投票最多”的链接?sort=most_voted URL参数并使用查询帖子过滤器显示投票最多的帖子。

例如,如果我想显示类别5中投票最多的帖子,我需要这样的URL?cat=5&sort=most_votes

如何保存/附加sort 浏览类别时URL中的参数(甚至按标记名、搜索等)?

2 个回复
最合适的回答,由SO网友:t31os 整理而成

您需要截取WordPress生成的链接,并将查询变量附加到相关URL上。

你可以很容易地做到这一点,在类别URL上使用一个过滤器,比如。。。

function add_my_query_var( $link ) {
    $link = add_query_arg( \'sort\', \'most_voted\', $link );
    return $link;
}
add_filter(\'category_link\',\'add_my_query_var\');
我还发现了Mike\'s post on SO, 它应该涵盖所有可能的URL,您希望调整查询变量。。。

add_filter(\'page_link\',\'add_my_query_var\');
add_filter(\'post_link\',\'add_my_query_var\');
add_filter(\'term_link\',\'add_my_query_var\');
add_filter(\'tag_link\',\'add_my_query_var\');
add_filter(\'category_link\',\'add_my_query_var\');
add_filter(\'post_type_link\',\'add_my_query_var\');
add_filter(\'attachment_link\',\'add_my_query_var\');
add_filter(\'year_link\',\'add_my_query_var\');
add_filter(\'month_link\',\'add_my_query_var\');
add_filter(\'day_link\',\'add_my_query_var\');
add_filter(\'search_link\',\'add_my_query_var\');

add_filter(\'feed_link\',\'add_my_query_var\');
add_filter(\'post_comments_feed_link\',\'add_my_query_var\');
add_filter(\'author_feed_link\',\'add_my_query_var\');
add_filter(\'category_feed_link\',\'add_my_query_var\');
add_filter(\'taxonomy_feed_link\',\'add_my_query_var\');
add_filter(\'search_feed_link\',\'add_my_query_var\');

add_filter(\'get_edit_tag_link\',\'add_my_query_var\');
add_filter(\'get_edit_post_link\',\'add_my_query_var\');
add_filter(\'get_delete_post_link\',\'add_my_query_var\');
add_filter(\'get_edit_comment_link\',\'add_my_query_var\');
add_filter(\'get_edit_bookmark_link\',\'add_my_query_var\');

add_filter(\'index_rel_link\',\'add_my_query_var\');
add_filter(\'parent_post_rel_link\',\'add_my_query_var\');
add_filter(\'previous_post_rel_link\',\'add_my_query_var\');
add_filter(\'next_post_rel_link\',\'add_my_query_var\');
add_filter(\'start_post_rel_link\',\'add_my_query_var\');
add_filter(\'end_post_rel_link\',\'add_my_query_var\');

add_filter(\'previous_post_link\',\'add_my_query_var\');
add_filter(\'next_post_link\',\'add_my_query_var\');

add_filter(\'get_pagenum_link\',\'add_my_query_var\');
add_filter(\'get_comments_pagenum_link\',\'add_my_query_var\');
add_filter(\'shortcut_link\',\'add_my_query_var\');
add_filter(\'get_shortlink\',\'add_my_query_var\');

add_filter(\'home_url\',\'add_my_query_var\');
add_filter(\'site_url\',\'add_my_query_var\');
add_filter(\'admin_url\',\'add_my_query_var\');
add_filter(\'includes_url\',\'add_my_query_var\');
add_filter(\'content_url\',\'add_my_query_var\');
add_filter(\'plugins_url\',\'add_my_query_var\');

add_filter(\'network_site_url\',\'add_my_query_var\');
add_filter(\'network_home_url\',\'add_my_query_var\');
add_filter(\'network_admin_url\',\'add_my_query_var\');
希望这有帮助。。

SO网友:hakre

您可以使用add_query_arg() (Wordpress Function) 向URL的查询(或也称为查询信息)部分添加其他参数。

$baseUrl = \'...\'; // the url you want to add your parameter to
$sort = \'...\'; // the sort parameter you have
$sortUrl = add_query_arg(\'sort\', $sort, $baseUrl);

结束