高级自定义字段按单选按钮值排序

Advanced custom fields orderby radio button value

有没有一种聪明的方法可以通过 acf 单选按钮值对数组进行排序? 我有一个 top-page page-template 和几个带有自定义字段的 child 页面。

在 top-page 中,我想显示 child 页面中的一些值: 页面标题,以及 child 页面 acf 字段中的一些值 最后我想通过 acf 单选按钮值对数组进行排序。

单选按钮值为:

one : A 
two : B
three : C
four : D
five : E

该字段是必填字段,因此我不必测试是否有值。

        <section id="info-box">

            <?php
            if(function_exists( 'get_field') ){

            $query = new WP_Query( 'pagename=top-page' );
            $services_id = $query->queried_object->ID;

            wp_reset_postdata(); //* Restore original Post Data *//

                $args = array(
                'posts_per_page' => -1,
                'post_type' => 'page',
                'post_parent' => $services_id,
                'orderby' => '', // radio button value //
                'order' => 'ASC'
                );

                $services_query = new WP_Query( $args );

                    // The Loop
                    if ( $services_query->have_posts() ) {

                        echo '<ul class="info-box-list">';
                            while ( $services_query->have_posts() ) {
                            $services_query->the_post();

                            echo '<li class="list-item">'; 

                                echo '<div class="list-item-box">';

                                echo '<a href="' . get_permalink() . '" figure class="link-box-image">';
                                the_field('image');
                                echo '</figure>';
                                echo '</a>';

                                echo get_the_title();
                                the_field( 'sub-title' );

                                echo '</div>';
                            echo '</li>';
                            }
                        echo '</ul>';
                    }

            /* Restore original Post Data */
            wp_reset_postdata();
            }
        ?>  
       </section>

现在我有点只是将字段转储到 top-page 直到我能弄清楚是否有一种聪明的方法可以通过单选按钮值对列表进行排序,acf 文档不是那么好在单选按钮功能上。

您需要的是 order by a custom field,但要小心,因为您的单选按钮值(一、二、三...)的实际顺序是:

  1. 五个
  2. 四个
  3. 一个
  4. 三个
  5. 两个

(就是这样:按字母顺序排列)因此,如果您想按数字排序,最好将单选按钮值设置为:

1 : A 
2 : B
3 : C
4 : D
5 : E

在此之后,您应该这样设置 WP_Query 的 $args 数组:

$args = array(
    'posts_per_page' => -1,
    'post_type'      => 'page',
    'post_parent'    => $services_id,
    'orderby'        => 'meta_value_num',
    'meta_key'       => 'YOUR_RADIO_BTN_FIELD_NAME',
    'order'          => 'ASC'
);

这应该可以解决问题:)