it-swarm.com.de

Termini per term_order bestellen

Kontext

  • Beitragstyp: Ressourcen
  • Taxonomie: Medientyp, Begriff: Audio
  • Taxonomie: Reihe

Der folgende Code zeigt eine eindeutige Liste der benutzerdefinierten Taxonomie "Serie" an.

Ich möchte die Liste nach term_order ordnen, aber es funktioniert nicht. Irgendwelche Vorschläge?

Die site . Derzeit ist es nach ID sortiert

    <?php
                $post_data = array();

                $my_query = new WP_Query( array( 
                        'post_type' => 'resource',
                        'posts_per_page' => -1,
                        'media_type' => 'audio'

                    ) 
                );

                if ( $my_query->have_posts() ) {
                    while ( $my_query->have_posts() ) {
                        $my_query->the_post();
                        $post_data[] = get_the_ID();
                    }
                }

// Start with whatever ID you want to have from Media Type
                $audio = 16;

                // Get all those post_ids for that term
                $post_ids = get_objects_in_term( $audio, 'media_type', array('post_status' => 'publish') );

                // Then get the series terms for those post ids
                $terms = wp_get_object_terms( $post_data, 'series', array('fields' => 'ids', 'orderby' => 'menu_order' ) );
                $result = array_values( array_unique($terms) );

                ?>


            <?php
        $a = $result;

        foreach ($a as $v) {
        $term = get_term( $v, 'series' );
        $name = $term->name;
        $slug = $term->slug;
        echo '<div class="resource-item"><a href="'.get_term_link($slug, 'series').'" title="'.$name.'"><div class="play"></div><li>'.$name.'</li></a></div>';      
        } 

        ?>
1
izharbuen

Anstelle von menu_order versuchen Sie es mit term_order.

Laut Dokumentation im Codex unterstützt wp_get_object_terms:

  • name
  • anzahl
  • schnecke
  • term_group
  • term_order und
  • term_id
1
Jonathan Wold

Viele Jahre später,

Sie können diesen Code in Ihrer functions.php hinzufügen:

function wpcf_filter_terms_order( $orderby, $query_vars, $taxonomies ) {
    return $query_vars['orderby'] == 'term_order' ? 'term_order' : $orderby;
}

add_filter( 'get_terms_orderby', 'wpcf_filter_terms_order', 10, 3 );

Dieser Code erzwingt, dass WP das Argument orderby => term_order in Ihrer Ausdrucksabfrage verwendet.

Da dies eines der Top-Ergebnisse bei Google ist und keines der oben genannten Ergebnisse für mich ganz funktioniert hat, schien dies Begriffe in einer Reihenfolge zurückzugeben, die mit ihrer Anzeige im Administrator übereinstimmt ...

 get_terms([
  'taxonomy'   => 'whatever_you_want',
  'meta_key'   => 'order',
  'orderby'    => 'meta_value_num'
]);

Falls es jemandem hilft, speichert WP einen Wert in der Termmeta-Tabelle unter der Tastenreihenfolge, die seine Anzeigeposition in den Admin-Menüs darstellt. Offensichtlich müsste es angepasst werden, wenn Sie zur gleichen Zeit auf anderen Meta abfragen möchten.

0
Ben White

wp_term_query akzeptiert term_order nicht als einen der orderby-Parameter. Sie müssen diese Option also zwingend zur Ausdrucksvariablen hinzufügen, indem Sie die Datei functions.php mit den folgenden Ausschnitten versehen.

function wpcf_filter_terms_order( $orderby, $query_vars, $taxonomies ) {
    return $query_vars['orderby'] == 'term_order' ? 'term_order' : $orderby;
}

add_filter( 'get_terms_orderby', 'wpcf_filter_terms_order', 10, 3 );

Wenn Sie nach dem Hinzufügen der obigen Snippets etwas wie das Folgende ausführen, werden die Begriffe nach term_order sortiert.

$terms = get_terms('category', array(
                    'orderby'  => 'term_order',
                    'order'    => 'ASC'
                ));

Zweiter Ansatz: Wenn Sie die Begriffe global und in WordPress nach term_order sortieren möchten, fügen Sie einfach die folgenden Ausschnitte zu functions.php hinzu.

function uc_get_terms_orderby($orderby, $args){
        return 't.term_order';
}
add_filter('get_terms_orderby', 'uc_get_terms_orderby', 10, 2);
0
SkyRar