私は、完成の途中でワードプレスサイトを私に手渡しました。私が最後にワードプレスを使用してから少なくとも1年が経ちましたが、私が違っていることがたくさんあります。異なるページに異なるコンテンツを表示するのに慣れている方法は、固有のコンテンツを必要とするページごとにページテンプレートを作成することです。
ある特定のページに、他のサイトとは異なるサイドバーを表示しようとしています。 1年前に私がしたことは、このページのページテンプレートを作成して新しいサイドバーファイルを作成してから、そのサイドバーファイルをページテンプレートに含めることです。これはうまくいかないことがわかりました。私が見ることができる主な原因はloop.php
とloop-page.php
です。これらは昔のサイトを構築するときによく使われる省略されたテーマには存在しませんでした。しかし、私が「二十から十」というテーマをコピーして新しい名前でそれを変更する前に、誰もがこのことに手を携えていたようです。
テーマのfunctions.php
に新しい動的サイドバーを登録しました。それをDashboardのWidgetsセクションに表示して、それにウィジェットを追加することができます。
私は神の愛のためにそれを私がそれにしたいページに表示させることはできません。私は以下を試しました:
1.)ページにカスタムテンプレートtemplate_news.php
を指定し、サイドバーを呼び出す場所に次の場所に配置します。
include ('sidebar-news.php');
sidebar-news.php
フィールドに、私がsidebar.php
にリストした "News"サイドバーIDを付けてfunctions.php
からコピーしたコードが含まれています。
<?php if ( is_active_sidebar( 'sidebar-news' ) ) : ?>
<div id="secondary" class="widget-area" role="complementary">
<ul class="xoxo">
<?php dynamic_sidebar( 'sidebar-news' ); ?>
</ul>
</div>
<?php endif; ?>
ページテンプレートが正しいページに適用されます。
2.)page.php
に入り変更しました:
<?php get_sidebar(); ?>
に:
<?php
if(is_page('18')) {
include ('sidebar-news.php');
}
else {
get_sidebar();
} ?>
また、ページIDが正しいことを確認するために数回チェックし、代わりにスラッグ名を使用してみましたが、役に立ちません。
3.)loop-page.php
で前のものを試しました
4.)次の条件文をsidebar.php
に配置しました。
<?php
if ( is_active_sidebar( 'sidebar-news' ) && is_page('18') ) : ?>
<div id="sidebarnews" class="widget-area" role="complementary">
<ul class="xoxo">
<?php dynamic_sidebar( 'sidebar-news' ); ?>
</ul>
</div>
<?php endif; ?>
また、いくつかの調査を行い、テーマの機能を拡張または変更するための適切な方法は、子テーマを作成することであることを見つけた後、それを試みましたが、いくつかのことに失敗しました。試して修正してください。
デフォルトの 'sidebar.php`が呼び出されてページに表示されていますが、ページIDを含む条件付きステートメントが存在していても、カスタムサイドバーウィジェットは表示されません。
私のカスタムテンプレートtemplate_news.php
、page.php
、またはloop-page.php
でget_sidebar();
を完全に削除しても何もしないようなので、ページ上でデフォルトのサイドバーがどのように呼び出されているのかもわかりません。
このサイドバーをページに追加する方法を誰かに教えてください。
私はあなたが必要とするかもしれないことは単に'widgets_init'
フックでregister_sidebar()
を実行することであると思います。 TwentyTenテーマのfunctions.php
ファイルには、register_sidebar()
の例がありますが、次のようになります。
add_action( 'widgets_init', 'twentyten_widgets_init' );
function twentyten_widgets_init() {
register_sidebar( array(
'name' => __( 'News Sidebar', 'yoursite' ),
'id' => 'sidebar-news',
'description' => __( 'The News Sidebar Area', 'yoursite' ),
'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
'after_widget' => '</li>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
/*
* THE REST OF THE SIDEBAR REGISTRATION CODE FROM twentyten_widgets_init() GOES HERE
*/
}
また、template_news.php
ページのテンプレートで、次のコードを使用してサイドバーを呼び出します。これにより、上記で作成したsidebar-news.php
ファイルが読み込まれます。
<?php get_sidebar( 'news' ); ?>
あなたが試した他のこと、そしてinclude
ステートメントは絶対に必要ないはずです。
すべてのページに同じサイドバーがある特定のページにのみウィジェットを表示するには、次のいずれかのプラグインを使用します。
指定したページのウィジェットを隠すだけです。各ウィジェットにチェックボックスを追加して、各サイトページに表示または非表示にします。
Widget Logicでは、WPのコンディショナルタグを使用して、どのページにウィジェットを表示するかを制御できます。それはまた 'widget_content'フィルタを追加します。