根据自定义字段值显示指向存档页面的链接

时间:2010-10-04 作者:Leon Quinn

我有一个招聘网站,我想在上面显示工作地点链接列表。工作地点已经输入到每个帖子的自定义字段中,因此我只想显示一个链接列表,单击该列表时,将显示只输入自定义值的帖子,即-

EnglandIrelandUSAetc。。

单击上面的国家/地区链接,查看所有将国家/地区添加为自定义字段值的帖子??

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

我建议对此使用自定义分类法,而不是自定义字段。您可以根据分类法对归档文件进行排序和列出,这比按自定义字段排序和列出归档文件要容易得多。

但是,如果要基于自定义字段列出,则需要修改发送到的参数query_posts() 在存档页上传递meta_keymeta_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键)。

尽管如此,我还是建议改用自定义分类法。它更干净、更具扩展性,并且需要更少的自定义编码。这也正是创建自定义分类法的情况。。。所以请不要重新发明轮子。。。

结束

相关推荐