自定义分类排序顺序不起作用

时间:2016-03-29 06:30:57

标签: php wordpress sorting taxonomy custom-taxonomy

我创建了一个名为product_categories的自定义分类法。

它有三个字段:

  1. 横幅图片

  2. 用于分类图像和

  3. 排序顺序。

  4. 我在其中添加了10个类别,同时也提供了排序顺序输入。

    现在我想在排序顺序中显示它,但它不起作用。

    在pt-categories排序顺序输入是

    <tr class="form-field">
    <th scope="row" valign="top"><label for="cat_sort_order"><?php _e('Product Sort Order'); ?></label></th>
    <td>
        <input id="banner-url" name="term_meta[sort_order]" type="text" style="width: 100%;" value="<?php echo $term_meta['sort_order'] ? $term_meta['sort_order'] : ''; ?>" />
        <span class="description"><?php _e('&nbsp;'); ?></span>
    </td>
    

    保存功能

        function save_product_categories_custom_fields($term_id)
        {
        if (isset($_POST['term_meta'])) {
            $t_id = $term_id;
            $term_meta = get_option("taxonomy_term_$t_id");
            $cat_keys = array_keys($_POST['term_meta']);
            foreach ($cat_keys as $key) {
                if (isset($_POST['term_meta'][$key])) {
                    $term_meta[$key] = $_POST['term_meta'][$key];
                }
            }
         //save the option array
            update_option("taxonomy_term_$t_id", $term_meta);
        }
    }
    

    以下是名为

    的类别
    function getLatestProducts() { 
    $args = array(
      'post_status' => 'publish',
      'post_type' => 'products', 
      'posts_per_page' => 12,
      'meta_key'        => '_cus_sort_order',
      'orderby'         => 'meta_value_num', 
      'order' => 'ASC'
    );
    ?>
    <?php
                    $args = array(
                    'orderby' => 'name',
                    );
                    $terms = get_terms('product_categories', $args);
                    foreach($terms as $term) {      
                   $prod_meta = get_option("taxonomy_term_".$term->term_id);
                        ?>
                    <a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
                    <?php
                        echo '<img src="'.$prod_meta['img'].'" title="" alt=""></a>';    ?>
                    </div>
                    <div class="product-name">
                    <h5>
                    <a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
                    <?php echo $term->name;?>
                    </a>
                    </h5>
    

    它显示了类别名称和图像,但没有按排序顺序显示。

2 个答案:

答案 0 :(得分:1)

您的代码被调用的类别

中存在错误

更正后的代码

function getLatestProducts() { 
    $args = array(
    'post_status' => 'publish',
    'post_type' => 'products', 
    'posts_per_page' => 12,
    'meta_key'        => '_cus_sort_order',
    'orderby'         => 'meta_value_num, name', 
    'order' => 'ASC'
);
            $terms = get_terms('product_categories', $args);
            foreach($terms as $term) {      
           $prod_meta = get_option("taxonomy_term_".$term->term_id);
                ?>
            <a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
            <?php
                echo '<img src="'.$prod_meta['img'].'" title="" alt=""></a>';    ?>
            </div>
            <div class="product-name">
            <h5>
            <a href="<?php echo get_term_link($term->slug, 'product_categories') ?>">
            <?php echo $term->name;?>
            </a>
            </h5>

我删除了一个在主参数数组后调用的参数数组。由于下面提到的参数数组覆盖了上面提到的参数数组。

删除参数数组

$args = array(
    'orderby' => 'name',
);

希望这有帮助!

答案 1 :(得分:0)

根据Mehul的回答,你的保存功能也有一些错误。

您是否检查了以前保存的类别排序顺序?

"taxonomy_term_$t_id"应为"taxonomy_term_" . $t_id。否则,您将所有内容保存为taxonomy_term_$t_id选项,而不是动态术语ID。

function save_product_categories_custom_fields($term_id)
{
if (isset($_POST['term_meta'])) {
    $t_id = $term_id;
    $term_meta = get_option("taxonomy_term_" . $t_id);
    $cat_keys = array_keys($_POST['term_meta']);
    foreach ($cat_keys as $key) {
        if (isset($_POST['term_meta'][$key])) {
            $term_meta[$key] = $_POST['term_meta'][$key];
        }
    }
 //save the option array
    update_option("taxonomy_term_" . $t_id, $term_meta);
}

}