サポート » 使い方全般 » 固定ページ内での条件分岐

  • sheep_o5

    (@sheep_o5)


    content-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>

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • KUCKLU

    (@kuck1u)

    何がどう上手くいかなくて、どのようにしたいのでしょうか。
    現状ですと、他の方もサポートし難いと思いますので、もう少し情報を開示していただけたらと思います。

    sheep_o5

    (@sheep_o5)

    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>
    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    この部分のコードだけを見たところ、何も問題なさそうです。
    貼っていただいたところ以外に原因がある気がします。

    と思って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(); ?>と書いたほうがいいってことになってます。

    sheep_o5

    (@sheep_o5)

    ありがとうございます。

    ループ内で使用してないので問題ないはずなのですが、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. ?>
    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    そうですね、get_template_partがwhile ( have_posts() )…..の内側にあるので、ループ内に記述されているのと同じです。
    記述場所を変えてみてください。

    sheep_o5

    (@sheep_o5)

    ループを消して、試してみたのですが見出し画像が表示されませんでした。

    他に原因があるということでしょうか。
    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">
    Tsuyoshi.

    (@andante0727)

    is_pageが動作しない原因は見えないのですが、is_pageを使用しなくても実現可能な気がするのですがどうでしょうか。

    WordPressでよくある固定ページのスラッグを取得して動的に画像を表示するコード

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    動的に画像を表示するTsuyoshi.さんの方法はぜひお試しいただくとして、
    is_pageが動作しない点は気持ち悪いのでもう少し考えてみましたが
    まだ記述場所がループ内にあるように見受けられます。

    <?php wp_reset_query(); ?>を記述しないと

    というのもおかしな話で、標準のクエリではなく何らかの手が加わっている印象を受けます。
    これ以上は全体を見てみないとなんともいえないです….

    nobita

    (@nobita)

    こんにちは

    ページの投稿タイトルを画像にしたいという事でしたら、

    条件を多少変更すれば、特にテンプレートをさわる必要はないと思います

    条件の変更とは、

    ページスラッグを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属性に 投稿タイトル 入れるようにしたほうがいいと思います。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「固定ページ内での条件分岐」には新たに返信することはできません。