2017-03-09 1 views
0

J'ai une taxonomie personnalisée appelée visiteurs_location, avec les termes NL et INT. J'ai des pages marquées qui sont marquées avec 1 ou les deux termes.
Un visiteur obtient une valeur NL ou INT en fonction de son adresse IP. Lorsque le visiteur de par exemple. 'NL' voit une vue d'ensemble des pages avec la taxonomie visitor_location il ne verra que les pages 'NL'. Jusqu'à ici pas de problème. Mais quand il va à une page de détail, la page suivante doit également être marquée avec NL. Ce code ne fait pas l'affaire: get_next_post(true, '', 'visitors_location') parce que lorsqu'une page est étiquetée avec 'NL' et 'INT' alors, si la page suivante est seulement étiquetée avec INT, elle sera aussi affichée. Donc, fondamentalement, je dois être en mesure d'inclure uniquement les pages dans get_next_post() qui ont un tag NL dans ce cas. Une suggestion?get_next_post avec un terme de taxonomie personnalisé

Répondre

1

Vous pouvez essayer ceci:

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; 
} 

Assurez-vous de remplacer « NL » avec une valeur dynamique qui est dans votre cas soit « NL » ou « INT »

+0

qui fonctionnent comme un charme! Merci Eveline! – SiteHopper