我有一个问题,我就是想不起来。让我直接跳进去:
基本上我有一个网站,有4个订单选项;
-名称升序名称降序价格升序价格降序
在我解决了一些问题后,按“标题”订购就很容易了。基本上就是这么做的。。
<?php
$order = isset($_GET[\'order\']) ? $_GET[\'order\'] : "ASC";
$sort_by_title = isset($_GET[\'sort\']) ? $_GET[\'sort\'] : "title";
?>
那么
<?php
$args["orderby"] = $sort_by_title;
$args["order"] = $order;
?>
最后
<a id="name-ascending" href="?order=ASC">Name Ascending</a>
<a id="name-descending" href="?order=DESC">Name Descending</a>
现在,价格字段是一个自定义字段,如果替换
$args["orderby"] = $sort_by_title;
使用
$args["orderby"] = $custom_field_name;
它会按价格排序,没有问题。问题是如何找出用户点击的内容,并确定现在应该订购什么。
如果需要,我的完整$args是
$args = array(\'post_type\' => \'model-pricing\', \'posts_per_page\' => 5, \'meta_key\' => \'Community\', \'meta_value\' => $community_choice, \'paged\' => $paged);
$args["orderby"] = $sort_by_title;
$args["order"] = $order;
我真的很感谢大家对我的帮助,甚至是一些关于我如何解决这个问题的有见地的想法。谢谢
SO网友:pcarvalho
我假设它是按标题排序的$_GET[\'sort_title\']
或按自定义字段(但不一定)和您传递的$_GET[\'sort_price\']
. 如果两者都不存在,“标题”是默认值。
记住这一点,检查两个值
if( isset($_GET[\'sort_title\']) ) {
$sort_by = $_GET[\'sort_title\'];
//orderby can accept multiple values
}
elseif ( isset($_GET[\'sort_price\']) ) {
$sort_by = \'meta_value\';
$args["meta_key"] = \'price\';
}
else { $sort_by = "title";
如果是这样,请不要忘记更改查询以允许对其他自定义字段进行限制。
args[\'meta_query\'] = array(
array(
\'key\' => \'Community\',
\'value\' => \'$community_choice\'
)
)
meaning: 我把“头衔”放在首位。然后,如果未提供,请最后检查“价格”,如果两者都未设置,则默认为标题