我有一个自定义分类法,其中填充了诸如“volume 1”、“volume 2”、“issue 1”、“issue 2”、“issue 10”和get\\u terms orderby name返回的列表为:issue 1、issue 10、issue 2,尽管我需要它是issue 1、issue 2、issue 10
我试着搜索wp。stackexchange和使用我的google fu都没有用。任何帮助都将不胜感激。
我有一个自定义分类法,其中填充了诸如“volume 1”、“volume 2”、“issue 1”、“issue 2”、“issue 10”和get\\u terms orderby name返回的列表为:issue 1、issue 10、issue 2,尽管我需要它是issue 1、issue 2、issue 10
我试着搜索wp。stackexchange和使用我的google fu都没有用。任何帮助都将不胜感激。
我知道这篇文章很老了,但仍然是对其他人的回应。
下面是一个非常简单的过滤器,可以将术语按数字进行排序。您只需设置变量$taxonomy_to_sort
具有taxonomy slug
并将其放入functions.php
你的主题。
add_filter( \'get_terms_orderby\', \'terms_order_as_number\', 10, 3);
function terms_order_as_number($order_by, $args, $taxonomies){
$taxonomy_to_sort = "numbers";
if(in_array($taxonomy_to_sort, $taxonomies)){
$order_by .= " * 1";
}
return $order_by;
}
我努力想让它发挥作用,
在https://objectiv.co/taking-natural-sort-alphanumeric-wordpress-even/
add_filter(\'get_terms\', \'sort_terms_naturally\', 20, 3);
function sort_terms_naturally ( $terms, $taxonomies, $args ) {
$taxonomy_to_sort = "pa_size";
if(in_array($taxonomy_to_sort, $taxonomies) && count($taxonomies) == 1 ){ // just sort natuarly the terms in the sidebar
$sort_terms = array();
foreach($terms as $term) {
$sort_terms[$term->name] = $term;
}
uksort( $sort_terms, \'strnatcmp\');
if ( strtolower($args[\'order\']) == "desc" || true) $sort_terms = array_reverse($sort_terms);
return $sort_terms;
}
return $terms;
}
其次,您实际的问题不是“按数字排序”,而是您构建这些数字的方式。如果您事先知道这个问题(并考虑到它),那么您可以编写一个过滤器,将这些零填充到您的数字之前。
function wpse80063_numsorted_issues()
{
$terms = get_terms( \'issues\', array( /* of possible args */ );
$digits = strlen( count( $terms ) );
$sorted_terms = array();
foreach ( $terms as $term )
{
preg_match( "/\\d+/", $term, $nr );
$nr = sprintf( "%0{digits}d", $nr );
// If the above line doesn\'t work, take this one:
// $nr = str_pad( $nr, $digits, "0", STR_PAD_LEFT );
$sorted_terms[ $nr ] = $term;
}
! empty( $sorted_terms ) AND sort( $sorted_terms );
return $sorted_terms;
}
我在Wordpress论坛上问过这个问题,但现在没有得到任何回复,我希望我可以在这里问。我找到密码了here 我的代码是:function exc_custom_taxonomy_dropdown( $taxonomy, $orderby, $order, $hierarchical, $show_count, $name) { $args = array( \'orderby\' => \'name\', \'order\' =&g