我觉得我已经到处都是网络,然后又回来寻找答案,这真的开始磨练我的齿轮了 .
不确定这是否是正确的方法,但我想以query_arg的形式将一个query_posts数组添加到URL . 这是我们的查询:
query_posts( array( 'meta_key' => 'rank', 'orderby' => 'meta_value_num', 'order' => 'DESC' , 'paged' => $paged,
如何使用add_query_arg将其传递给URL,以便使用该meta_key / query_posts数组重新排序帖子?我试过这个,它似乎没有改变帖子的顺序,这里有我遗漏的东西 .
<a href="<?php echo $by_rank;?>"> Rank </a>
<?php $by_rank= esc_url(add_query_arg(array('meta_key' => 'rank', 'orderby' => 'meta_value_num', 'order' => 'DESC'))); ?>
我想将查询变量添加到URL字符串的原因是,用户可以根据meta_key / meta_value对类别页面上的帖子进行排序 . 除了使用meta_key之外,以类似的方式进行排序?orderby = date .
这可以做到,对吗?因为我认真开始认为这是不可能的 .
来自拉希尔的回答
<?php
$meta_key = (isset($_GET['meta_key'])) ?
sanitize_text_field($_GET['meta_key']) : 'rank'; // use default value here ''
$orderby = (isset($_GET['orderby'])) ?
sanitize_text_field($_GET['orderby']) : 'meta_value_num'; // use default value here ''
$order = (isset($_GET['order'])) ?
sanitize_text_field($_GET['order']) : 'DESC'; // use default value here ''
$by_rank = esc_url(add_query_arg(array(
'meta_key' => $meta_key,
'orderby' => $orderby,
'order' => $order
)));
?>
<a href="<?php echo $by_rank;?>"> Rank </a>
放入值,与其他页面上的query_posts数组一样正常的值,帖子不会重新排序 .
2 回答
你实际上正在做
add_query_arg
罚款,但在分配它之前回显变量,你的问题是一些 Value .更改为:(记住代码从上到下运行)
现在已经为
$by_rank
分配了一个值,您可以回显它 . 它会输出Edit:
现在你必须将变量
$meta_key
,$orderby
和$order
放在你的query_posts()
函数上面:像这样:
现在从url更改查询字符串将影响
query_posts()
答案:-
创建一个pre_get_posts过滤器,只需将meta_key名称传递给URL,就像这样?orderby = rank