Contact Info

  • aniuma OÜ Harju maakond, Tallinn, Lasnamäe linnaosa, Sepapaja tn 6, 15551

Smart Custom Fieldsを利用したときのオプション取得関数 SCF::GETが重かった

前々から利用している Smart Custom Fileds (略称SCF)で、こんなループをいつもどおり利用していました。

Before

<?php
 $args = array(
	 'post_type' => 'geo',
	 'posts_per_page' =>300',
 );

 $fudo_query = new WP_Query($args);
 if ($fudo_query->have_posts()) :
	 while ($fudo_query->have_posts()) : $fudo_query->the_post(); ?>
				 name: '<?php the_title(); ?>',
				 lat: <?php echo SCF::get( 'ido' ); ?>,
				 lng: <?php echo SCF::get( 'keido' ); ?>,
	 <?php
	 }
	 endwhile;
 endif;
 wp_reset_postdata();
 ?>

このコードの前後で処理時間を計測したら約10sかかっていました。(ループ1件あたり0.03s)

After

<?php
 $args = array(
	 'post_type' => 'geo',
	 'posts_per_page' =>300',
 );

 $fudo_query = new WP_Query($args);
 if ($fudo_query->have_posts()) :
	 while ($fudo_query->have_posts()) : $fudo_query->the_post(); ?>
				 name: '<?php the_title(); ?>',
				 lat: <?php echo get_post_meta( $post->ID, 'ido' ,true); ?>,
				 lng: <?php echo get_post_meta( $post->ID, 'keido' ,true); ?>,
	 <?php
	 }
	 endwhile;
 endif;
 wp_reset_postdata();
 ?>

標準関数の get_post_meta に変更したら、なんと約0.3sで処理が終わりました(30倍の処理速度!?)

※関数の中の処理までは調査はしていません

検証環境
WordPress 5.7.2
Smart Custom Fields 4.1.5