wake-up-neo.com

Wie erhalte ich Taxonomiebegriffe nach ID in einer bestimmten Reihenfolge?

Wie erhalte ich Taxonomiebegriffe nach ID in einer bestimmten Reihenfolge? Unten ist mein Code und ich dachte, wenn ich get_terms die Argumente mit ID und post_in übergeben, aber ich sehe nicht die Ergebnisse, die ich dachte, ich sollte.

$args_terms = array(
                'post_in' => array(47, 48, 49, 46 , 50, 5),
                'orderby' => 'post_in',
                'parent' => '0'
            );

$custom_post_type = 'menu-food';
$taxonomy = 'menu-food-categories';
$taxonomy_terms = get_terms( $taxonomy, $args_terms);
2
Denoteone

get_terms unterstützt kein post__in-Argument und ich sehe kein anderes Argument, mit dem Sie eine Bestellung erzwingen können. Sie können dies jedoch mit einem von mindestens zwei Filtern erreichen:

function gto_forced_order($orderby) {
  $orderby = "FIELD(t.term_id,5,1,4)";
  return $orderby;
}
add_filter('get_terms_orderby','gto_forced_order');

$terms = get_terms('category');
var_dump($terms);

Oder...

function gto_forced_order($pieces) {
  $pieces['orderby'] = "ORDER BY FIELD(t.term_id,5,1,4)";
  return $pieces;
}
add_filter('terms_clauses','gto_forced_order');

Dieser 5,1,4 ist der Begriff IDs. Die Abfrage wird nach dem sortiert, was dort angegeben ist.

Diese Filter funktionieren beide global und ändern jeden Aufruf in get_terms. Mit den anderen Argumenten, die die Filter bieten, können Sie jedoch steuern, wo der Filter ausgeführt wird.

function gto_forced_order($pieces,$taxonomies,$args) {
  if (in_array('category',$taxonomies)) {
    $pieces['orderby'] = "ORDER BY FIELD(t.term_id,5,1,4)";
  }
  return $pieces;
}
add_filter('terms_clauses','gto_forced_order',1,3);

Wenn Sie var_dump($pieces,$taxonomies,$args) an den Anfang dieses Rückrufs setzen, können Sie sehen, womit Sie arbeiten müssen (obwohl dies zu einem Durcheinander führt - nur zum Debuggen).

Es ist ähnlich mit get_terms_orderby, aber die Parameter sind ein bisschen anders .

3
s_ha_dum