• 解決済 fionn_0602

    (@fionn_0602)


    現在、固定ページにて以下のカスタムフィールを用いまして特定カテゴリーに属する記事の五十音順での一覧表示しております。

    [カテゴリー] 本 = book
    [カスタムフィールド] あいうえお = text

    それで問題としましては、表示そのものは何とか出来ているのですが、表示するまでにかなりの時間が掛かってしまっております点です。
    恐らく以下のような記述で同じ処理を五十音分繰り返している事が原因だと思い、何とか無駄を省いて簡略化出来ないかと色々試しているのですが全く上手くいきません。

    <h3 class="headline3">あ</h3>
        <?php $args = Array( 'category_name' => 'book', 'category__not_in' => array( 20 ), 'meta_key' => 'あいうえお', 'meta_value' => 'あ',  'orderby' => 'title', 'order' => 'ASC' ); ?>
            <?php $the_query = new WP_Query($args); ?>
            <?php if($the_query -> have_posts()): ?>
            <?php while($the_query -> have_posts()): $the_query -> the_post(); ?>
              <a class="title" href="<?php the_permalink() ?>"><?php the_title(); ?></a>
            <?php endwhile; ?>
            <?php endif; ?>
        <?php wp_reset_postdata(); ?>
    
    <h3 class="headline3">い</h3>
        <?php $args = Array( 'category_name' => 'book', 'category__not_in' => array( 20 ), 'meta_key' => 'あいうえお', 'meta_value' => 'い',  'orderby' => 'title', 'order' => 'ASC' ); ?>
            <?php $the_query = new WP_Query($args); ?>
            <?php if($the_query -> have_posts()): ?>
            <?php while($the_query -> have_posts()): $the_query -> the_post(); ?>
              <a class="title" href="<?php the_permalink() ?>"><?php the_title(); ?></a>
            <?php endwhile; ?>
            <?php endif; ?>
        <?php wp_reset_postdata(); ?>
    
    ・
    ・
    ・

    この場合、どのような記述をすれば良いのでしょうか。
    どなたかお答え頂けましたら幸いです。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 一度 'meta_key' => 'あいうえお' だけで('meta_value' を指定しないで)全ポストを取得し、その結果取得される $the_query を再度、ループさせて加工してみる、というのはいかがでしょう。

    トピック投稿者 fionn_0602

    (@fionn_0602)

    ご返答有難うございます。
    ご助言通りの形が実現出来ましたならば問題はかなり改善されるように思えます。
    今現在はご助言に従いまして色々と試しております途中で御座いまして、
    まだ上手く動作させる見通しも立ってはおりませんが、
    取り急ぎご助言下さいましたお礼だけでも返信させて頂きます。

    トピック投稿者 fionn_0602

    (@fionn_0602)

    ここ数日間、上記の件に関しまして色々と試しましたが、
    恥ずかしながら上手く動作させる事が出来ておりません。
    一度ご助言を頂きました上で大変恐縮では御座いますが、
    何方様か具体的な記述方法もしくはそのヒントなどご指導頂けないでしょうか。
    重ね重ね大変申し訳御座いませんが、どうか宜しくお願い致します。

    <?php
    $args = array(
    	'category_name' => 'book',
    	'category__not_in' => array( 20 ),
    	'meta_key' => 'あいうえお',
    );
    $the_query = new WP_Query( $args );
    if ( $the_query->have_posts() ) :
    	// 配列を準備
    	$books = array(
    		'あ' => array(),
    		'い' => array(),
    		'う' => array(),
    		'え' => array(),
    		'お' => array(),
    	);
    	// ループ 1
    	while ( $the_query->have_posts() ) { $the_query->the_post();
    		$text = get_post_meta( $post->ID, 'あいうえお', true );
    		if ( $text && isset( $books[$text] ) ) {
    			// 準備した配列に格納
    			$books[$text][] = $post;
    		}
    	}
    	// ループ 2
    	foreach ( $books as $text => $posts ) { ?>
    <h3 class="headline3"><?php echo esc_html( $text ); ?></h3>
    <?php
    		// ループ 2-1
    		foreach ( $posts as $post ) {
    			setup_postdata( $post ); ?>
    <a class="title" href="<?php the_permalink() ?>"><?php the_title(); ?></a>
    <?php
    		}
    		wp_reset_postdata();
    	}
    endif;

    未検証なのどこか間違っていたらすみません

    トピック投稿者 fionn_0602

    (@fionn_0602)

    mimosafa様、何度も有難う御座います。
    お陰様で問題なく表示させる事が出来ました。
    問題でありました表示速度に関しましても、
    以前はキャッシュが切れた状態での表示に
    書籍1,000冊で十数秒は軽く掛かっていたものが
    ほぼ気にならない速度で表示されるまでに改善されました。
    mimosafa様、この度は本当に有難う御座いました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「カスタムフィールドを用いた記事一覧ページの表示に時間が掛かる」には新たに返信することはできません。