0

wp_list_pages を使用して wp_nav_menu を使用していた古いテーマを更新しようとすると、投稿とページを表示するループが壊れます。次のようなさまざまな実装を試しました。

http://thinkvitamin.com/code/getting-started-with-wordpress-custom-menus/

http://wpfirstaid.com/2010/07/upgrade-wp_list_pages-to-wp_nav_menu/

そして、WordPress コーデックスからの基本的な実装。

functions.php に変更を加えてもループには影響しませんが、任意のバージョンの wp_nav_menu をテンプレートに追加すると、投稿またはページを呼び出すループが機能しなくなります。私のループは次のとおりです。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

query_posts を使用するとコンテンツは表示されますが、ループに関する何かが wp_nav_menu で機能していません。表示されるのは、間違った ID を持つ空の投稿です (また、post_class も正しく機能していません):

<div class="post--42 post type-post status-publish format-standard hentry" id="post--42">
        <h2></h2>

そのためのコードは次のとおりです。

<div <?php post_class() ?> id="post-<?php the_ID(); ?>">
        <h2><?php the_title(); ?></h2>

不良ループのすぐ下。すべての投稿またはページには、この特定の ID が表示されます。

何か案は?

編集して追加:

今私が持っている functions.php で:

add_action('init', 'register_custom_menu');

function register_custom_menu() {
register_nav_menu('header', 'Header Menu');
}

そして私のheader.phpには次のものがあります:

<?php wp_nav_menu(array('menu' => 'Header Menu')); ?>

そして、作成したメニューが GUI で選択されます。メニューは完全に表示されますが、ページのコンテンツはなくなります。

4

2 に答える 2

0

あなたが提供した情報で、私はあなたが以下に示すようにendwhileを追加する必要があると思います。これが当てはまるかどうか教えてください:)

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

and ends here:

<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

テーマのテンプレートの上部に、ヘッダーテンプレートの呼び出しを必ず含めてください。独自のデザイン内でTheLoopを使用している場合(および独自のデザインがテンプレートではない場合)、WP_USE_THEMESをfalseに設定します。

<?php define('WP_USE_THEMES', false); get_header(); ?>

参照リンク-http : //codex.wordpress.org/The_Loop

于 2012-07-25T04:08:18.750 に答える
0

問題は Shopp プラグインにありました。どうやらこれは Shopp の既知の問題です: https://shopp.lighthouseapp.com/projects/47561/tickets/1905-shopp-products-in-theme-menu-causes-blank-pages

回避策は、商品をメニューに入れるのではなく、カスタム メニュー項目を作成することです。

于 2012-07-26T04:04:15.103 に答える