Php 使用自定义分类术语获取下一篇文章
我有一个名为visitors\u location的自定义分类法,术语为NL和INT。 我有标记为1或同时标记这两个术语的页面。Php 使用自定义分类术语获取下一篇文章,php,wordpress,Php,Wordpress,我有一个名为visitors\u location的自定义分类法,术语为NL和INT。 我有标记为1或同时标记这两个术语的页面。 访问者根据其IP获得值NL或INT。当来自例如“NL”的访问者看到带有分类访问者位置的页面网格概览时,他将只看到“NL”页面。到目前为止没问题 但是当他进入一个细节页面时,下一页也必须用NL标记。 此代码不起作用: get_next_post(true),“访问者位置”) 因为当一个页面同时被标记为“NL”和“INT”时,如果下一个页面只被标记为INT,那么它也会被显
访问者根据其IP获得值NL或INT。当来自例如“NL”的访问者看到带有分类访问者位置的页面网格概览时,他将只看到“NL”页面。到目前为止没问题 但是当他进入一个细节页面时,下一页也必须用NL标记。 此代码不起作用:
get_next_post(true),“访问者位置”)
因为当一个页面同时被标记为“NL”和“INT”时,如果下一个页面只被标记为INT,那么它也会被显示。
因此,在本例中,基本上我只需要在get_next_post()中包含具有NL标记的页面。
有什么建议吗?你可以试试这个:
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”的动态值