1

なんらかの理由で、サイドバーに追加しようとしている基本的なループが保持されているという問題があります....内部ページ(シングルおよびページ .php )ではループし続けますが、index.phpではループしません。

index.php (ホームページ) で問題ありません。

たとえば、順序付けされていないリストの項目にループを設定したかったので、次のようにしました。

      <div id="sideBarMain">
        <h2>title4sidebar</h2>
       <ul>     
             <?php 
            query_posts( array ( 'category_name' => 'left_sidebar', 'posts_per_page' => 4, 'orderby=menu_order' ) );
            if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
            <li><a href="<?php the_permalink();  ?>"><?php the_title(); ?></a></li>
            <?php endwhile; endif; ?>
        </ul>

      </div><!-- sidebar ender -->

いくつかのことが起こっています。1. 最も問題なのは、このループが発生すると、ナビゲーションとすべてが壊れてしまうことです。ページをクリックすると、そのページのヘッダーにあるリスト項目の 1 つがロードされます...そのため、メイン ナビゲーションで「会社概要」をクリックすると、代わりに「項目タイトル」でページがロードされます.... .

クリックされたアイテムでも発生します。

2 - (page/single.php ページ) のサイドバーで、最初の 4 つの投稿をカテゴリ「left_sidebar」で投稿し、表示方法、css を配置し、4 番目の項目の後にすべてを投稿します。ループをもう一度繰り返します。

3 - マイ サイトのコンテンツ領域には 2 つの列があり、左側にサイドバー、中央にメイン コンテンツ領域があります。誤って繰り返されている部分 (ループが繰り返された後) で、FireBug で確認したところ、繰り返された項目で、別の列の隣にある h タグから H タグのプロパティも取得していると思います。したがって、最初の 4 つの広告申込情報は、CSS、リンクの色、ロールオーバーなどで指定されたスタイルで問題なく表示され、次のバグのある 4 つの広告申込情報はスタイルが適用されず、最初の 4 つのようにパーマリンクも適用されません。 .

3 - div や ul / lis などの php ループからすべての html を削除したので、css は適用されません。この方法では、ループからテキストのみが表示されますが、ループの html 部分を削除したため、同じことが起こります。最初の 4 つの li には、標準のデフォルトの青いリンク テキストなどが表示されます。次のバグのある 4 は、以前と同じように、htag が添付されたすべての big が表示されます....

すべてのトラブルシューティング - サイドバーに由来するループがページに 1 つだけあります。-すべてのフロートを適切にクリアしました-W3Cでエラーなどをチェックすると、何もありません。緑のライトがずっと。- php 側にエラーはありません。(すべてのページをチェックし、エラーを有効にしました)ローカルサーバー上。

道に迷いました。

何が起こっているのかについてのアイデアはありますか?

注: sidebar.php ページにはループが 1 つしかありませんが、技術的にインポートすると、サイドバー wp ループとコンテンツを取得する page.php / single.php ループであると思われる 2 つのループが存在します。

おそらく最新のWPの時点で何か違うことはありますか?私はいつもこのようにやっていましたが、今は問題があります......

何か案は?道に迷いました。

ありがとうございます。

4

2 に答える 2

2

あなたの問題は2つあります:

1) query_posts の使用をやめる必要がありますこの関数の使用を終了する必要がある理由については、十分に文書化された理由がたくさんありますが、これが最良の説明だと思います。

2) クエリをリセットしていません。詳しくは後ほど。

1 番に戻ると、query_posts の問題は、グローバルな $wp_query オブジェクトに影響を与えることです。あなたの意図がメイン ループを変更することであった場合、これは問題ありませんが、それはここでやろうとしていることではありません。使用する必要があるのはWP Queryです。新しいクエリ オブジェクトを作成する構文は query_posts と同じですが、$wp_query のグローバル インスタンスに影響を与えないという利点があります。

クエリをリセットすると、Wordpress クエリを使用するコードの他のセクションがクエリ オブジェクトの影響を受けないことも保証されます。

コード例を次のように変更してみてください。

<?php 
$query = new WP_Query(array('category_name'=>'left_sidebar','posts_per_page'=>4,'orderby=menu_order'));
if($query->have_posts()) : while($query->have_posts()) : $query->the_post();
?>
<li><a href="<?php the_permalink();  ?>"><?php the_title(); ?></a></li>
<?php
endwhile;endif;
wp_reset_postdata();
?>
于 2013-02-03T16:19:24.887 に答える
1

functions.php には、これらの関数と相互作用するフィルターがいくつかある場合があります。そこを見て、何かを見つけたいかどうかを確認してください。

また、ループの前後に使用してみて<?php wp_reset_query(); ?>、他のループと相互作用しないようにする必要があります。

于 2013-02-03T16:18:36.493 に答える