日本語
フォーラム
フォーラム / 使い方全般 / カスタムフィールドの値が存在する場合、リンクとして出力したい
(@2dq7j7)
11年、 10ヶ月前
お世話になります。
front-pageテンプレートで以下のことをやりたいと考えて作業をしています。
・全ての投稿タイプ(カスタム投稿タイプ含む)を対象 ・カスタムフィールド名(new_arrival)と日付でソート ・カスタムフィールドのテキストを表示させて、その記事へのリンクを張る
現在のコードは以下の通りです。
<?php /*新着情報として表示するカテゴリの指定と記事の数*/ $posts = get_posts(array( 'meta_key' => 'new_arrival', 'orderby' => 'meta_value', 'post_type' => any, 'order' => 'DESC', ) ); if ($posts) { ?> <div id="news-topics"> <?php foreach($posts as $post): setup_postdata($post); ?> <li><?php the_time('Y年m月d日'); ?><a href="<?php the_permalink(); ?>"><?php echo get_post_meta($post->ID,'new_arrival',true); ?></a></li> <?php endforeach; ?> </div> <?php } ?>
2014年07月05日 テスト1 <= カスタムフィールドの内容が表示される 2014年07月05日 テスト2 2014年06月30日 <= カスタムフィールドの値がない場合は、日付と空白になる 2014年06月30日 <= 2014年07月01日 <=
現時点でできていること ・カスタムフィールドのテキストを表示させ、その記事へのリンクを貼る
現時点でうまく出来てないこと ・カスタムフィールドは存在するが、値が何も入っていない記事まで表示される。 ・日付でソートしようとすると、今度はカスタムフィールドが表示されない
(@nobita)
こんにちは
テストしていませんけど
foreach ( $posts as $post ): setup_postdata( $post ); if(!empty( get_post_meta($post->ID, 'new_arrival', true) ) { ?> <li>.....</li> <?php } endforeach;
で
カスタムフィールドは存在するが、値が何も入っていない記事まで表示される。
値のないカスタムフィールドというのがよくわかりませんが、普通作れませんよね。 スペースとか、なんか入れている場合は、emptyではなく 空白用のフィールドと一致した場合は、という風に書き換えてください
トピック「カスタムフィールドの値が存在する場合、リンクとして出力したい」には新たに返信することはできません。