我有一个名为visitor_location的自定义分类,其中包含NL和INT。
我有标记的页面标记有这些术语中的一个或两个。
访问者根据其IP获得值NL或INT。来自例如的访客'NL'看到了带有分类标准visitor_location的页面的网格概览,他只会看到'NL'页面。到这里没问题。
但是当他进入详细页面时,下一页也必须用NL标记。
这段代码不起作用:
get_next_post(true, '', 'visitors_location')
因为当页面标记为'NL'和'INT'时,如果下一页仅用INT标记,它也将显示。
所以基本上我需要能够只在get_next_post()中包含在这种情况下具有NL标记的页面。
有什么建议吗?
答案 0 :(得分:1)
你可以试试这个:
add_filter('get_next_post_where', 'fix_adjacent_post_where', 10, 5);
add_filter('get_previous_post_where', 'fix_adjacent_post_where', 10, 5);
function fix_adjacent_post_where($where, $in_same_term, $excluded_terms, $taxonomy, $post)
{
global $wpdb;
if ($in_same_term === true && $taxonomy === 'visitors_location')
{
$where .= " AND ID IN (
SELECT p.ID FROM {$wpdb->posts} AS p
JOIN {$wpdb->term_relationships} AS tr ON tr.object_id=p.ID
JOIN {$wpdb->term_taxonomy} AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
JOIN {$wpdb->terms} AS t ON t.term_id = tt.term_id
WHERE t.name='NL' )";
}
return $where;
}
请务必更换' NL'具有动态价值,在您的情况下,' NL'或者' INT'