我建议对此使用自定义分类法,而不是自定义字段。您可以根据分类法对归档文件进行排序和列出,这比按自定义字段排序和列出归档文件要容易得多。
但是,如果要基于自定义字段列出,则需要修改发送到的参数query_posts()
在存档页上传递meta_key
和meta_value
您正在搜索。
要添加查询变量,请执行以下操作:
add_action(\'init\', \'add_custom_meta_url\');
function add_custom_meta_url() {
global $wp,$wp_rewrite;
$wp->add_query_var(\'location\');
$wp_rewrite->add_rule(\'location/([^/]+)\',\'index.php?location=$matches[1]\',\'top\');
$wp_rewrite->flush_rules(false); // This should really be done in a plugin activation
}
然后,您的存档永久链接将成为
http://mycoollocationsite.com/location/england
http://mycoollocationsite.com/location/ireland
http://mycoollocationsite.com/location/usa
... 等
接下来,您需要将传入位置的任何值添加到实际查询中:
add_action(\'parse_query\', \'apply_custom_meta_to_query\');
function apply_custom_meta_to_query(&$query) {
if (isset($query->query[\'location\'])) {
$query->query_vars[\'meta_key\'] = \'location\';
$query->query_vars[\'meta_value\'] = $query->query[\'location\'];
unset($query->query_vars[\'location\']); // You don\'t need this
}
}
我假设您将自定义数据存储在一个名为
location
... 如果我错了,那就改一下。
但这将允许您根据特定位置筛选归档文件。如果您还想启用基于日期的存档,那么在我的第一个代码块中需要一些额外的规则(现在,这将显示一个包含所有帖子的列表,其中包含location
meta\\u键)。
尽管如此,我还是建议改用自定义分类法。它更干净、更具扩展性,并且需要更少的自定义编码。这也正是创建自定义分类法的情况。。。所以请不要重新发明轮子。。。