何がどう上手くいかなくて、どのようにしたいのでしょうか。
現状ですと、他の方もサポートし難いと思いますので、もう少し情報を開示していただけたらと思います。
content-page.php内で、条件分岐でpage-スラッグ.php別に、見出し画像を変更したいのですが、反映されません。
ご教授お願い出来ますでしょうか。
<h1 class="entry-title">
<?php if(is_page('recruit')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/recruit.jpg" width="780" height="50" alt="" />
<?php elseif(is_page('hotel')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/hotel.jpg" width="780" height="50" alt="" />
<?php elseif(is_page('system')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/system.jpg" width="780" height="50" alt="" />
<?php endif; ?>
</h1>
この部分のコードだけを見たところ、何も問題なさそうです。
貼っていただいたところ以外に原因がある気がします。
と思ってCodexを見てみたところ。。。
関数リファレンス/is page – WordPress Codex 日本語版
ループではいくつかのグローバル変数が置き換えられるため、is_page()は機能しません。
とありました。
つまり
<h1 class="entry-title">
<?php if(is_page('recruit')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/recruit.jpg" width="780" height="50" alt="" />
(中略)
<?php endif; ?>
</h1>
<?php if(have_posts()): while(have_posts()): the_post(); ?>
(中略)
<?php endwhile; endif; ?>
なら大丈夫だけど
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<h1 class="entry-title">
<?php if(is_page('recruit')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/recruit.jpg" width="780" height="50" alt="" />
(中略)
<?php endif; ?>
</h1>
(中略)
<?php endwhile; endif; ?>
だとダメってことっぽいです。一度確認してみてください。
あと直接関係ないですが、現在は<?php bloginfo('template_url'); ?>
の部分は、<?php echo get_template_directory_uri(); ?>
と書いたほうがいいってことになってます。
ありがとうございます。
ループ内で使用してないので問題ないはずなのですが、page.phpから
content-page.phpを呼び出すときに、ルーフで呼び出している影響でしょうか。
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php
// If comments are open or we have at least one comment, load up the comment template
if ( comments_open() || '0' != get_comments_number() ) :
comments_template();
endif;
?>
<?php endwhile; // end of the loop. ?>
そうですね、get_template_partがwhile ( have_posts() )…..の内側にあるので、ループ内に記述されているのと同じです。
記述場所を変えてみてください。
ループを消して、試してみたのですが見出し画像が表示されませんでした。
他に原因があるということでしょうか。
content-page.php内の下記ソースに<?php wp_reset_query(); ?>を記述しないと
page-スラッグ.phpの投稿内容が吐き出してくれない状態です。。
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h1 class="entry-title">
<?php if(is_page('contact')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/contact.jpg" width="780px" height="50px" alt="top" />
<?php elseif(is_page('recruit')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/recruit.jpg" width="780px" height="50px" alt="top" />
<?php elseif(is_page('system')): ?>
<img src="<?php bloginfo('template_url'); ?>/images/system.jpg" width="780px" height="50px" alt="top" />
<?php endif; ?>
</h1>
</header><!-- .entry-header -->
<?php wp_reset_query(); ?>
<div class="entry-content">
is_pageが動作しない原因は見えないのですが、is_pageを使用しなくても実現可能な気がするのですがどうでしょうか。
WordPressでよくある固定ページのスラッグを取得して動的に画像を表示するコード
動的に画像を表示するTsuyoshi.さんの方法はぜひお試しいただくとして、
is_pageが動作しない点は気持ち悪いのでもう少し考えてみましたが
まだ記述場所がループ内にあるように見受けられます。
<?php wp_reset_query(); ?>
を記述しないと
というのもおかしな話で、標準のクエリではなく何らかの手が加わっている印象を受けます。
これ以上は全体を見てみないとなんともいえないです….
こんにちは
ページの投稿タイトルを画像にしたいという事でしたら、
条件を多少変更すれば、特にテンプレートをさわる必要はないと思います
条件の変更とは、
ページスラッグをIDに置き換えるのが許容される
img 要素を 背景に変更 がOKなら
style.cssに
.page .post-146 .entry-title{
width:100%;
height:200px;
text-indent:-999em;
background:url( http://example.com/images/sample.jpg);
background-size:cover;
background-position:center;
}
とか、書くと 大体同じことができるのではないでしょうか?
どうしても画像なら、雰囲気だけですけど
<?php if( file_exists( 画像パス ) {?>
<h1><img src="<?php bloginfo('template_url'); ?>/images/<?php echo get_query_var( 'pagename' );?>.jpg" width="780" height="50" alt="" /></h1>
<?php } else {
//普通の投稿タイトルを書く
}?>
で、画像が準備できていれば画像に置き換えできると思います。
画像にするなら、alt属性に 投稿タイトル 入れるようにしたほうがいいと思います。