-1

私はワードプレスのウェブサイトを運営しており、さまざまなカテゴリに応じてさまざまなサイドバーをエコーアウトしようとしていますが、エコータグ内にphpコードを入れることができないようです. コードは、サイドバーのさまざまなカテゴリ ページでさまざまなコンテンツをエコー アウトするために正常に動作していますが、エラーが返されるため、エコー ' ' 内に php コードを追加できません。これは私のコードです:

<?php  if ( is_active_sidebar( "main_sidebar" ) ) :  ?>

     <div id="main_sidebar" class="widget-area">
               <?php
               if ( is_category( '7' )) {
               echo 'Sidebar to be echo'd on category page with ID=7';
               }
               else 
               {
               echo 'Sidebar to be echo'd on all the other category pages';
               }   
               ?>
     </div><!-- #first_sidebar .widget-area -->

<?php endif; ?>

そして、これが私がそれを機能させたい方法です:

<?php  if ( is_active_sidebar( "main_sidebar" ) ) :  ?>

     <div id="main_sidebar" class="widget-area">
               <?php
               if ( is_category( '7' )) {
               echo '<?php dynamic_sidebar( 'category_fashion' ); ?>';
               }
               else 
               {
               echo '<?php dynamic_sidebar( 'main_sidebar' ); ?>';
               }   
               ?>
     </div><!-- #first_sidebar .widget-area -->

<?php endif; ?>

上記のコードを使用すると、次のエラーが発生します。

解析エラー: 構文エラー、予期しない T_STRING、',' または ';' が必要です /home/ignoremu/public_html/wp-content/themes/.../sidebar.php の 6 行目

私を助けてください。ありがとう。

4

4 に答える 4

3

最良の方法は、エコーで HTML を完全にスキップし、エコーで結果をそのまま出力することです。

<?php  if ( is_active_sidebar( "main_sidebar" ) ) :  ?>

     <div id="main_sidebar" class="widget-area">
               <?php
               if ( is_category( '7' )) {
               echo dynamic_sidebar( 'category_fashion' );
               }
               else 
               {
               echo dynamic_sidebar( 'main_sidebar' );
               }   
               ?>
     </div><!-- #first_sidebar .widget-area -->

<?php endif; ?>
于 2013-04-02T10:53:35.047 に答える
1

一重引用符を含むエコー内に一重引用符を入れたい場合は、引用符をエスケープする必要があります。

//                      Escaped here
echo 'Sidebar to be echo\'d on category page with ID=7';

二重引用符で囲まれた文字列内の二重引用符についても同様です。

編集:おっと、完全に読んでいませんでした。問題の変更を修正するには:

if ( is_category( '7' )) {
    echo '<?php dynamic_sidebar( 'category_fashion' ); ?>';
} else {
    echo '<?php dynamic_sidebar( 'main_sidebar' ); ?>';
}   

に:

if ( is_category( '7' )) {
    echo dynamic_sidebar( 'category_fashion' );
} else {
    echo dynamic_sidebar( 'main_sidebar' );
} 
于 2013-04-02T10:54:30.720 に答える
1

すでに php を使用しているのに、もう一度 php を開始する必要があるのはなぜですか? すぐ下で動作します。

echo dynamic_sidebar( 'category_fashion' );
于 2013-04-02T10:54:35.100 に答える
0

dynamic_sidebar() が関数の場合、関数内で値を返す/エコーするのではなく、なぜそれをエコーする必要があるので、それを呼び出すと、指定されたパラメーターで値が返されます

于 2013-04-02T10:56:31.230 に答える