前提・実現したいこと
ループ中に投稿のカスタムフィールドが入力されているかで条件分岐したいです。
発生している問題・エラーメッセージ
何も表示されないです。
該当のソースコード
念の為functions.phpも書きます
php
1 <?php if (have_posts()) : ?> 2 <div> 3 <?php global $post; 4 $args = array( 5 'posts_per_page' => 10 6 ); 7 $myposts = get_posts( $args ); 8 foreach ( $myposts as $post ) : setup_postdata( $post ); ?> 9 <section class="post"> 10 <?php 11 if if(!get_post_meta($post->ID, 'img', true)) { 12 // カスタムフィールド判別 13 the_post_thumbnail('post-thumbnail'); 14 } else { 15 echo "<img src=" .get_post_meta($post->ID, "img", true). ">"; 16 } ?> 17 <div class="post-title"> 18 <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3> 19 </div> 20 </section> 21 <?php endforeach; ?> 22 </div> 23 <?php else: endif; ?>
functions.php
php
1 // 固定カスタムフィールドボックス 2 function add_url_fields() { 3 add_meta_box( 'custom_meta_setting', 'img', 'insert_meta_fields', 'post', 'normal'); 4 } 5 add_action('admin_menu', 'add_url_fields'); 6 7 // カスタムフィールドの入力エリア 8 function insert_meta_fields() { 9 global $post; 10 echo '<input type="text" name="img" value="'.get_post_meta($post->ID, 'img', true).'" size="50" /><br>'; 11 } 12 13 // カスタムフィールドの値を保存 14 function save_meta_fields( $post_id ) { 15 if(!empty($_POST['img'])){ 16 update_post_meta($post_id, 'img', $_POST['img'] ); 17 }else{ 18 delete_post_meta($post_id, 'img'); 19 } 20 } 21 add_action('save_post', 'save_meta_fields'); 22
修正テキスト
functions.phpに記載
php
1 // small_thum_chk 2 function small_thum_chk() { 3 if ( get_post_meta($post->ID, 'img', true) ){ 4 $thumb = '<img src='.get_post_meta($post->ID, 'img', true).'>'; 5 } elseif ( has_post_thumbnail() ) { 6 $thumb = the_post_thumbnail( 'small_thumbnail', array('title' => get_the_title()) ); 7 } else { 8 $thumb = '<img src="https://placehold.jp/eee/aaa/64x64.jpg?text=no-img">'; 9 } 10 echo $thumb; 11 }
small_thum_chk()を呼び出した際にのみカスタムフィールドに記載されているURLを記述したimgタグを挿入できるようにしたいです。
発生している事象ですが,
if ( get_post_meta($post->ID, 'img', true) )
を認識せず、
php
1elseif ( has_post_thumbnail() ) { 2 $thumb = the_post_thumbnail( 'small_thumbnail', array('title' => get_the_title()) ); 3}
のみ読み込んでいます。
imgのカスタムフィールドは記述しています。
追記
php
1 <?php if (have_posts()) : ?> 2 <section class="sidebar_area"> 3 <p>最近の投稿</p> 4 <?php global $post; 5 $args = array( 6 'posts_per_page' => 4 7 ); 8 $myposts = get_posts( $args ); 9 foreach ( $myposts as $post ) : setup_postdata( $post ); ?> 10 <div class="sidebar_post clearfix"> 11 <a href="<?php the_permalink() ?>" class="float-left"><?php small_thum_chk(); ?></a> 12 <h4 class="float-left"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4> 13 </div> 14 <?php endforeach; ?> 15 </section> 16 <?php else: endif; ?>
functions.php
php
1 // small_thum_chk 2 function small_thum_chk() { 3 if ( get_post_meta($post->ID, 'img', true) ){ 4 $thumb = '<img src='.get_post_meta($post->ID, 'img', true).'>'; 5 } elseif ( has_post_thumbnail() ) { 6 $thumb = the_post_thumbnail( 'small_thumbnail', array('title' => get_the_title()) ); 7 } else { 8 $thumb = '<img src="https://placehold.jp/eee/aaa/64x64.jpg?text=no-img">'; 9 } 10 echo $thumb; 11 }
if ( get_post_meta($post->ID, 'img', true) )
がtrueになりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/16 08:28
2019/07/16 08:43
2019/07/16 08:49
2019/07/16 09:02
2019/07/16 09:38
2019/07/16 09:47
2019/07/16 09:50
2019/07/16 09:50
2019/07/16 09:54
2019/07/16 09:56
2019/07/16 10:00
2019/07/16 10:03
2019/07/16 10:16
2019/07/16 10:25 編集
2019/07/16 10:25
2019/07/16 10:28
2019/07/16 10:31
2019/07/16 10:36