archive.phpにカスタムテンプレート値を出力
-
こんにちは。
現在、archive.php(アーカイブテンプレート)に下記のようなコードを書いて、
出力対象になっている個別記事のタイトルにかけるアンカーリンクをコントロールしようと頑張っていますが、page.php(個別ページテンプレート)ではうまくいったものの、アーカイブテンプレートだと上手く表示されてくれず、結局カスタムフィールドの条件を判断しないで、記事のパーマリンクをリンクに指定されたものを返してきます。<?php if ( get_post_meta($post->ID,'外部URL',TRUE) ): ?> <a href="<?php echo post_custom('外部URL')?>" target="_blank"> <?php elseif ( get_post_meta($post->ID,'リンクなしのお知らせ',TRUE) ): ?> <?php else: ?> <a href="<?php the_permalink(); ?>"> <?php endif; ?> <h2 class="post-title entry-title"><?php trim_str_by_chars( get_the_title(), 48 ); ?></h2> <?php if ( !get_post_meta($post->ID,'リンクなしのお知らせ',TRUE) ): ?> </a> <?php endif; ?>
そもそも、アーカイブテンプレートと固定ページテンプレートではカスタムフィールドのpost->IDの解釈が違うのかな?と思いつつも、ハマってしまって抜け出せずにおります。(´・ω・`)
解決につながりそうなヒントだけでも結構ですので、
お知恵を拝借できますと幸いです。うまくいきましたら、また結果とコードご報告したいと思っております。
よろしくお願いします。
-
archive.php でそのコードが
while ( have_posts() ) : the_post(); 〜 endwhile;
で囲まれていれば良い気がします。ちなみに
$post->ID
は
get_the_ID()
と書く方が気持ち良いです。kz様
レスありがとうございます。
いただいたアドバイスをヒントにarchive.phpを見なおしたところ、
下記のように書かれていました。<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', ( post_type_supports( get_post_type(), 'post-formats' ) ? get_post_format() : get_post_type() ) ); ?> <?php endwhile; ?> <?php else : ?> <?php get_template_part( 'loop-error' ); // Loads the loop-error.php template. ?> <?php endif; ?>
引っ張ってくる先のコードでは、前回紹介させていただいたコードを書いていたのですが、archive.phpに直接書かないと上手く機能しないようでした。
archive.phpに先のコードを直接埋め込んだところ問題なく表示されたのですが、
このようにincludeさせる場合に、なぜ機能しなかったのかがよくわかっておりません。。考え方のヒントいただけませんでしょうか。
随分投稿から日にちが立っているものに対して、ありがとうございました。archive.phpにコードを埋め戻して解決しました!
wordpressではカスタムフィールドとget_template_partの相性があまりよくないみたいです。
- トピック「archive.phpにカスタムテンプレート値を出力」には新たに返信することはできません。