如何按自定义字段值对类别进行排序

时间:2015-07-01 作者:cmsdeployed

我正在使用以下内容:

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

    ); 
但是我可以得到按元值键排序的类别列表

image of the category in dashboard

不幸的是,它仍然按标题列出类别。

有没有更好的方法?谢谢你的帮助。

完整代码:

    <?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按asc顺序排列类别列表?

1 个回复
SO网友:open-ecommerce.org

你的问题对我来说很有意义,我的朋友,但是get\\u类别没有按“meta\\u value\\u 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添加了“类别顺序”字段,但它与您创建的方式很好,应该可以正常工作。

结束

相关推荐

向GET_CATEGORIES下拉列表添加自定义选项

我有一个下拉菜单,用于在我正在处理的小部件中选择类别。一切正常,选项保存在数据库中。我现在要做的是添加一个空白选项,而不是在单击“保存”时自动设置。在这种情况下,用户可能不想设置类别。 $this->categories = get_categories(); foreach ( $this->categories as $cat ) { $selected = ( $cat->term_id == esc_att