中有一列term_relationships
的表term_order
这似乎意味着可以设定术语的顺序。这就是说,看起来它实际上不起作用——核心没有以任何方式使用它。
有点乱摸wp_set_object_terms
, get用于为对象(帖子类型、用户)分配术语的函数揭示了以下一点:
<?php
$t = get_taxonomy($taxonomy);
if ( ! $append && isset($t->sort) && $t->sort ) {
$values = array();
$term_order = 0;
$final_tt_ids = wp_get_object_terms($object_id, $taxonomy, array(\'fields\' => \'tt_ids\'));
foreach ( $tt_ids as $tt_id )
if ( in_array($tt_id, $final_tt_ids) )
$values[] = $wpdb->prepare( "(%d, %d, %d)", $object_id, $tt_id, ++$term_order);
if ( $values )
if ( false === $wpdb->query( "INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . join( \',\', $values ) . " ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)" ) )
return new WP_Error( \'db_insert_error\', __( \'Could not insert term relationship into the database\' ), $wpdb->last_error );
}
这似乎可以设置
sort
关于分类法的争论为true和WP将为您排序。这个
sort
这个参数似乎没有文档记录,但一些测试代码表明它确实有效。
<?php
add_action(\'init\', \'wpse72703_modify_tags\', 100);
function wpse72703_modify_tags()
{
global $wp_taxonomies;
$wp_taxonomies[\'post_tag\']->sort = true;
}
在
using tags in permalinks 要更改此选项:
$tags = get_the_tags( $post->ID );
到。。。
$terms = wp_get_object_terms($post->ID, \'post_tag\', array(
\'orderby\' => \'term_order\',
));
这将迫使返回的条款遵守您添加它们的顺序。