サポート » テーマ » wp_titleタグをLoop内のif文でechoしたHTML間に表示する方法

  • 解決済 Anonymous User 4963935

    (@anonymized-4963935)


    下記のテーマのindex.phpに記述しているコードですが、HTML部分のみブラウザの(「表示」→「ページのソース」)に出力され、wp_title(”,true)部分が表示されません。何がおかしいが分かる方おられます?ただのPHPコードの記述ミスでしょうか?

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    
    <?php if (!is_front_page()) {echo '<div id="example"><span id="test">'.wp_title('',true).'</span></div>';} ?>		
    
    <?php the_content(); ?>
    
    <?php endwhile; endif; ?>

    よろしくお願いします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック投稿者 Anonymous User 4963935

    (@anonymized-4963935)

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>			
    
    				<?php if (!is_front_page()) {echo '<div id="example"><span id="test">';} ?><?php wp_title('',true) ?><?php if (!is_front_page()) {echo '</span></div>';} ?>
    
    				<?php the_content(); ?>
    
    			<?php endwhile; endif; ?>

    追加質問1:
    上記のようなコードでページタイトルが表示されるようになりましたが、<?php wp_title('',true) ?>部分は必ず<?php ?>で別途囲まないとだめなんでしょうか(通常のPHPコードのようにピリオド( . )等で連結できないのでしょうか?)?

    追加質問2:
    また、上記のコードのブラウザーでの出力は以下のようになりますが、ページタイトルの左側にスペース(<span id="test">と「ページタイトル」の間)が入ってしまいます。この問題(ページタイトルの左側にスペースが入ってしまう)をどのようにすれば回避できるでしょうか?
    HTMLコードでの出力:
    <div id="example"><span id="test"> ページタイトル</span></div>

    よろしくお願いします。

    トピック投稿者 Anonymous User 4963935

    (@anonymized-4963935)

    追加質問1の追記:
    テンプレートタグを使用する場合独特のもっと効率の良いコード記載方法などありましたら、ご教授ください。

    よろしくお願いします。

    モデレーター jim912

    (@jim912)

    doganteさん、こんにちは。

    当初の質問&追加質問1
    もうすこしcodexを熟読するなどして、テンプレートタグの各パラメータの意味を理解してください。

    wp_title('',false)

    にすれば、最初のコードで表示されるはずです。
    2つめのコードはif分岐の外になってしまっているので、front_pageであるなしにかかわらず表示されてしまっているはずですよ。

    追加質問2

    trim( wp_title( '',false ) )

    で消えませんか?

    トピック投稿者 Anonymous User 4963935

    (@anonymized-4963935)

    jim912さん
    ご回答、ありがとうございました。

    その1:

    もうすこしcodexを熟読するなどして、テンプレートタグの各パラメータの意味を理解してください。

    wp_title(”,false)

    にすれば、最初のコードで表示されるはずです。

    jim912さんのご指摘のようにwp_titleのパラメータを「true」から「flase」にすると私の最初の記述(ピリオド( . )で連結)で、ちゃんと動作しました。てっきり、–「true」=タイトルを表示する / 「flase」=タイトルを表示しない– だと思っていました。「flase」=タイトルを表示しないで変わりに値を返す–だったのですか。どおりで、get_wp_titleが存在しないはずですね。

    その2:

    2つめのコードはif分岐の外になってしまっているので、front_pageであるなしにかかわらず表示されてしまっているはずですよ。

    いわれてみればそうなのですが、以下のコードでなぜか正しく動作しています(フロントページでは、wp_titleが表示されず、その他のページではちゃんと表示されています。)。ただし、jim912さんのおっしゃるとおり、記述的には正しくないですね。

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>			
    
    				<?php if (!is_front_page()) {echo '<div id="example"><span id="test">';} ?><?php wp_title('',true) ?><?php if (!is_front_page()) {echo '</span></div>';} ?>
    
    				<?php the_content(); ?>
    
    			<?php endwhile; endif; ?>

    その3:

    trim( wp_title( ”,false ) )

    で消えませんか?

    上記でページタイトルの左側のスペースが消せました。

    このスレの論題はこれで解決しましたので、解決済みとさせていただきます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「wp_titleタグをLoop内のif文でechoしたHTML間に表示する方法」には新たに返信することはできません。