サポート » 使い方全般 » Advanced Custom Fields で制作したカスタム投稿記事を、50音順でソート

  • 解決済 sarasarari

    (@sarasarari)


    Advanced Custom Fields で制作したカスタム投稿記事を、50音順でソートしたく、

    <?php if(have_posts()): ?>
    <?php while(have_posts()): the_post(); ?>

    の前に、

    <?php $args = array(
    //ソート
    'orderby' => 'meta_value', 
    'meta_key' => 'yomigana',
    'order' => 'asc'
    );
    $my_query = new WP_Query( $args ); ?>

    と記載したのですが、うまくいきません。

    どのようにしたらよいでしょうか?

    ちなみに、タイトルには漢字が含まれますので、
    読み仮名のフィールド”yomigana”を作りました。

    • このトピックは sarasarariが8 ヶ月前に変更しました。
13件の返信を表示中 - 1 - 13件目 (全13件中)
  • LABE

    (@latobeam)

    どのテーマファイルをお使いですか?

    ikaring

    (@ikaring)

    確認はしていないですが、少なくともWP_Queryを使うのであれば、

    <?php if(have_posts()): ?>
    <?php while(have_posts()): the_post(); ?>

    の部分は以下に変えないといけないかと思います。

    <?php if ( $my_query->have_posts() ) : ?>
    <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
    • この返信は8 ヶ月前に  ikaring さんが編集しました。
    ioxrxogi

    (@ioxrxogi)

    'order' => 'asc'

    でなく

    'order' => 'ASC'

    じゃないですか?

    LABE

    (@latobeam)

    @ioxrxogi さん
    order は大文字に直して ASC になる場合は ASC 、それ以外の場合は DESC として扱われます。

    https://developer.wordpress.org/reference/classes/wp_query/parse_order/

    ioxrxogi

    (@ioxrxogi)

    LABEさん

    なるほど、失礼しました。

    sarasarari

    (@sarasarari)

    ご教授ありがとうございます。

    <?php $args = array(
    //ソート
    'orderby' => 'meta_value', 
    'meta_key' => 'yomigana',
    'order' => 'ASD'
    );
    $my_query = new WP_Query( $args ); ?>
    
    <?php if ( $my_query->have_posts() ) : ?>
    <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>

    と記述しましたが、何も吐き出されなくなってしまいました。

    WP_Query の記述は正しいように見えます。
    ですから、どのテーマファイルにお書きになったのかを知りたいのですが。
    できればループ内の記述も知りたいです。

    LABEさま

    ご回答をありがとうございます。

    archive-cplist.phpに、以下の通り記述しております。

    <section class="ctAria">
    <section class="ctAriaIn">
    
    <?php $args = array(
    //ソート
    'orderby' => 'meta_value', 
    'meta_key' => 'yomigana',
    'order' => 'ASD'
    );
    $my_query = new WP_Query( $args ); ?>
    
    <?php 
    // the query
    $the_query = new WP_Query( $args ); ?>
    
    <?php if ( $the_query->have_posts() ) : ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    
    <div class="corpBox">       
            
            <table>
            	<tr>
                	<th rowspan="4" class="r03_th">
                    <?php the_title(); ?>
                    <br>
                    <span class="worksIcon">
                    <?php if( get_field('cp_type') ) { ?>
    				<?php the_field('cp_type'); ?>
    				<?php } ?>
                    </span>
                    <?php if(get_field("cp_url")): ?>
                    <span class="websiteIcon">
                    <a href="<?php the_field('cp_url'); ?>" target="_blank">WEBサイト</a>
                    </span>
                    <?php else : ?>
                    <?php endif; ?>
                    </th>
                    <td class="td02">所在地:</td>
                    <td class="td03">
                    <?php if( get_field('cp_address') ) { ?>
    				<?php the_field('cp_address'); ?>
    				<?php } ?>
                    </td>
                </tr>
                <tr>
                	<td class="td02">よみがな:</td>
                    <td class="td03">
                    <?php if( get_field('yomigana') ) { ?>
    				<?php the_field('yomigana'); ?>
    				<?php } ?>
                    </td>
                </tr>
                <tr>
                	<td class="td02">TEL:</td>
                    <td class="td03">
                    <?php if( get_field('cp_tel') ) { ?>
    				<?php the_field('cp_tel'); ?>
    				<?php } ?>
                    </td>
                </tr>
                <tr>
                	<td class="td02">FAX:</td>
                    <td class="td03">
                    <?php if( get_field('cp_fax') ) { ?>
    				<?php the_field('cp_fax'); ?>
    				<?php } ?>
                    </td>
                </tr>
            </table>
        </div>
    
    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
    <?php else : ?>
    <?php endif; ?>
    
    <div class="pageNav"><?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?></div>
    
    </section>
    </section>

    'order' => 'ASD'

    'order' => 'ASC'
    ですが、
    LABEさんが書かれているように、ASCは小文字でも大丈夫なようです。

    ioxrxogiさま

    ありがとうございます。

    'order' => 'ASC'

    としましたが、何も吐き出されません。

    ループタグを

    <?php if(have_posts()): ?>
    <?php while(have_posts()): the_post(); ?>

    にすると、ソートはされませんが、吐き出しはされ、記事を表示してくれます。

    本筋から外れますが、
    $my_query = new WP_Query( $args );は不要ですね。

    あと、wp_pagenaviはwp_reset_postdata();の前にないとうまく動かなかった気がします。
    加えて$args'paged' => get_query_var('paged')があったほうが良い気もします。

    カスタム投稿タイプなので、 $argsに
    'post_type' => 'cplist'が必要ですね。
    何も指定しないとpostになっているために'meta_key' => 'yomigana'の投稿がないんだと思います。

    ikaringさま

    おっしゃる通りの記述に修正しましたところ、無事にソートされたものが表示されました!!
    本当にありがとうございました。

    ご教授いただいた皆様方へも深く感謝いたします。

    ご丁寧に教えていただきまして、ありがとうございました。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「Advanced Custom Fields で制作したカスタム投稿記事を、50音順でソート」には新たに返信することはできません。