Как сортировать категорию по пользовательскому значению поля

Я использую следующее:

$catargs = array( 'meta_key'=> 'category_custom_order', 'orderby' => 'meta_value_num', 'order'=> 'ASC', ); 

но я могу получить список категорий, отсортированный по ключу метазначения

изображение категории на приборной панели

к сожалению, он все еще перечисляет категорию по названию.

Есть лучший способ сделать это? Спасибо за помощь.

Полный код:

  <?php // Query by category and group $catargs = array( 'meta_key'=> 'category_custom_order', 'orderby' => 'meta_value_num', 'order'=> 'DESC', ); $categories = get_categories( $catargs ); foreach ($categories as $category) { ?> <section id="<?php echo $category->slug; ?>" class="entry-category"> <header class="entry-header"> <h2 class="category-header"><?php echo $category->name;// Category title ?></h2> </header> <div class="entry-desc"><?php echo $category->description; ?></div> <?php // WP_Query arguments $args = array ( 'post_type' => 'post', 'cat' => $category->cat_ID, 'posts_per_page' => '-1', 'order' => 'DESC', 'orderby' => 'title', ); // The Query $query = new WP_Query( $args ); // The Loop if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <header class="entry-header"> <h3 class="entry-title"> <?php the_title(); ?> </h3> </header> <div class="entry-summary"> <?php the_content(); ?> </div> </article> <?php } } else { // no posts found } // Restore original Post Data wp_reset_postdata(); ?> </section> <!-- #<?php echo $category->slug; ?> --> 

Я просто хочу сортировать категорию по значению мета-ключа из включенного изображения.

Я использую функцию ниже для создания настраиваемого поля для моих категорий под панелью инструментов:

  /* * Add Custom Field To Category Form */ add_action( 'category_add_form_fields', 'category_form_custom_field_add', 10 ); add_action( 'category_edit_form_fields', 'category_form_custom_field_edit', 10, 2 ); function category_form_custom_field_add( $taxonomy ) { ?> <div class="form-field"> <label for="category_custom_order">Custom Order</label> <input name="category_custom_order" id="category_custom_order" type="text" value="" size="10" aria-required="true" /> <p class="description">Enter a custom order value.</p> </div> <?php } function category_form_custom_field_edit( $tag, $taxonomy ) { $option_name = 'category_custom_order_' . $tag->term_id; $category_custom_order = get_option( $option_name ); ?> <tr class="form-field"> <th scope="row" valign="top"><label for="category_custom_order">Custom Order</label></th> <td> <input type="text" name="category_custom_order" id="category_custom_order" value="<?php echo esc_attr( $category_custom_order ) ? esc_attr( $category_custom_order ) : ''; ?>" size="10" aria-required="true" /> <p class="description">Enter a custom order value.</p> </td> </tr> <?php } /** Save Custom Field Of Category Form */ add_action( 'created_category', 'category_form_custom_field_save', 10, 2 ); add_action( 'edited_category', 'category_form_custom_field_save', 10, 2 ); function category_form_custom_field_save( $term_id, $tt_id ) { if ( isset( $_POST['category_custom_order'] ) ) { $option_name = 'category_custom_order_' . $term_id; update_option( $option_name, $_POST['category_custom_order'] ); } }//end 

Теперь я ищу, как упорядочить список категорий по этому настраиваемому значению поля от 1 до 5 в порядке возрастания?

Ваш вопрос имеет смысл для меня, мой друг, но get_categories не имеют возможности заказать «meta_value_num», а затем упорядочить по настраиваемым полям.

Вы можете сделать заказ после того, как вы получите массив, используя функцию usort php:

  $all_subcategories = array('parent' => $categoryID); $categories = get_categories( $all_subcategories ); function order_categories($a, $b) { if ($a->term_id == $b->term_id) { return 0; } return ($a->term_id < $b->term_id) ? -1 : 1; } usort($categories, "order_categories"); 

Это отлично работает для меня. Я использовал ACF, чтобы добавить поле порядка категорий, но отлично, как вы его сделали, и должен работать.