自定义分类列表的更改顺序


15

默认情况下,WordPress按字母顺序(而不是在标签框中输入的顺序)对自定义分类法(在本例中为标签)进行排序。

有谁知道一种以自定义分类法在帖子编辑屏幕中输入的顺序显示的方法?

有问题的网址是:http : //granadatheater.com/

GGW(Goes Good With)艺术家目前处于字母顺序,他们希望更改它,以便按照与输入时相同的顺序进行排序。

因此,如果输入Artist1,Artist3,Artist2,则它应该显示在网站的前端。


您是说按每个帖子输入订单?
hakre 2011年

也许按ID订购?
Bainternet

据我所知,它们以字母顺序显示,所以我可能不明白这个问题。您到底要在哪里?您能否提供屏幕截图和示例URL,以在其中找到要更改的内容?
MikeSchinkel 2011年

Answers:


0

“开箱即用”是不可能的...

默认的“ orderby”选项为(升序或降序)

  • 身份证名
  • 默认
  • ug
  • 计数
  • term_group

这些都在法典中详细说明。

-

也就是说,这里有一些聪明的女士和男士。如果有人能解决,我可以确定其中一个人!


8

经过大量搜索和广泛测试,我找到了答案。

将此代码添加到主题的functions.php中:

function set_the_terms_in_order ( $terms, $id, $taxonomy ) {
    $terms = wp_cache_get( $id, "{$taxonomy}_relationships_sorted" );
    if ( false === $terms ) {
        $terms = wp_get_object_terms( $id, $taxonomy, array( 'orderby' => 'term_order' ) );
        wp_cache_add($id, $terms, $taxonomy . '_relationships_sorted');
    }
    return $terms;
}
add_filter( 'get_the_terms', 'set_the_terms_in_order' , 10, 4 );

function do_the_terms_in_order () {
    global $wp_taxonomies;  //fixed missing semicolon
    // the following relates to tags, but you can add more lines like this for any taxonomy
    $wp_taxonomies['post_tag']->sort = true;
    $wp_taxonomies['post_tag']->args = array( 'orderby' => 'term_order' );    
}
add_action( 'init', 'do_the_terms_in_order');

(信用:此内容基于-但有所改进-http: //wordpress.kdari.net/2011/07/listing-tags-in-custom-order.html


即使管理员清除了缓存,这也行吗?似乎不稳定地依赖于缓存来进行术语排序。
PBwebD

1
如果管理员清除了他们的缓存,那么新条款无论如何都将消失,因为它们尚未保存。自从我发布此代码以来,我们一直在许多Wordpress网站上使用上述代码,但从未遇到问题。
Biranit Goren

1
@BiranitGoren原谅我继续这个话题,但是所有答案的中心问题是它term_order本身不受支持。所以我想知道,在您的代码示例中,term_order定义了什么位置以便可以对其进行排序?
GigiSan

2
@GigiSan实际上是本机支持的,但是只是未使用。WordPress的核心是term_order-但默认情况下不使用它。因此,您无需定义它,因为它已经定义。(请参阅trac上的此文件:core.trac.wordpress.org/ticket/9547
Biranit Goren

2

我一直在努力寻找自定义分类法中按字母顺序排列的子术语的答案...我不建议您更改核心WP文件,因此这是我添加到我的taxonomy.php文件中的内容,以列出自定义分类法说明,并提供了链接以字母顺序排列子项。进行修改以满足您的需求,希望对您有所帮助。

// Get Main Taxonomy for use in template file
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
$termTaxonomy = $term->taxonomy;

<h1><?php echo apply_filters( 'the_title', $term->name ); ?></h1>

<?php // test for description before unleashing a div 
if ( !empty( $term->description ) ): 
  echo '<div class="description">';
  echo $term->description;
  echo '</div>;
endif; ?>

// Now get children terms, using get_term & 'child_of' get's us alphabetical order
$termchildren = get_terms( $termTaxonomy, array(
  'child_of'     => $term->term_id,
  'hierarchical' => 0,
  'fields'       => 'ids',
  'hide_empty'   => 0
) );

// Make an alphabetical linked list
echo '<ul>';
foreach ($termchildren as $child) {
  $term = get_term_by( 'id', $child, $termTaxonomy );

  // Modify this echo to customize the output for each child term
  echo '<li><a href="' . get_term_link( $term->name, $termTaxonomy ) . '" alt="' .$term->description. '">' . $term->name . '</a></li>';
}
echo '</ul>';

2

我知道这是一种作弊,但您始终可以使用“ 简单自定义邮购”插件。它是免费的,除帖子类型外,它还允许您对分类法进行排序。


0

在网页中显示完好顺序之后,可能是:

在您的wp_get_post_terms中放入“ orderby” =>“ term_group”

范例:

“ poste”是我自定义的分类名称,请输入

$poste =  wp_get_post_terms($post->ID, 'poste', array("fields" => "names", "orderby" => "term_group"));
        if(!empty($poste[0])){ echo $poste[0];}
        if(!empty($poste[1])){
          echo " - ", $poste[1]; }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.