it-swarm.com.de

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