特定の投稿(ページではない)のサイドバーを非表示にしたいです。これどうやってするの?
背景については、Googleとここの両方でかなり検索しました。投稿とページで異なるサイドバーを表示したり、特定のページで特定のサイドバーを表示(または非表示)するための解決策はたくさんありますしかし、サイドバーを特定の1つの投稿から隠すことについては何もありません。
これが私がTwitterで述べたアイデアです。
function special_post_template( $template ) {
// Identify a single query for the special post
if ( is_single() && 10 == get_the_ID() )
$template = get_template_directory() . '/special-single.php';
return $template;
}
add_filter( 'template_include', 'special_post_template' );
1つの可能性のあるアプローチはサイドバーを含んでいないのでサイドバーをそれほど隠しているわけではありません。
サイト内の各ページで異なるテンプレートを使用できます。通常、あなたが通常期待するように、ヘッダ、フッタ、コンテンツ、サイドバーを含むデフォルト( "Default Template")を使用するテンプレートを作成するでしょう。ただし、サイト用に 新しいページテンプレート を作成することもできます。これは同じフォーマットに従いますが、サイドバーは省略します。
あるいは、問題のページのIDまたはスラッグを知っている場合は、そのペース用のページテンプレートを作成することもできます。次のいずれかのファイルをテーマに配置するだけです。
WordPressはデフォルトでそれをロードします。
そのため、WordPressはこの種の階層をサポートしていません。カスタム投稿タイプを作成してから、サイドバーなしでその投稿タイプを表示するsingle-{post-type}.php
を作成することでそれを回避することができますが、それはあなたが望むものではないかもしれません。
ただし、テーマが適切なボディクラスを適用している場合は、投稿IDに基づいてcanをフィルタ処理し、CSSを使用して非表示にすることができます。テーマで body_class()
を適切に使用すると、クラスpostid-{post-id}
がボディに適用されます。あなたはあなたの利点のためにこれを使うことができます。
/* ... All of your other CSS rules */
body.postid-15 .sidebar {
display: none;
}
このアプローチの欠点はサイドバーのマークアップがまだロードされていることです、それはCSSで隠されているだけです。しかし今のところ(WordPressがすでに持っているページごとのテンプレートに似た投稿ごとのテンプレートを実装するまで)、これで十分です。
Is_single()条件をタップするだけではできませんか。またはあなたのsingle.phpファイルに触れることができませんか。可能であれば、私はあなたの投稿に対してif文を試してみます。
if(is_single('potato-pancake')) {
// nothing
} else {
get_sidebar();
}
参考: http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page
1つの投稿のみに解決策が必要な場合は、管理パネルからpost id
を入手してください。
(あなたがedit link
の上にマウスを持っていくと、あなたはpost=xxx
のような何かを見るでしょう。xxx
はあなたのpost id
です)
それからこのようにあなたの単一のテンプレートを変更してください
あなたの投稿IDは66
だとしましょう
if (!is_single(66)) {
get_sidebar();
}
継続的にこれが必要な場合は、Justin TadlockのTheme Layoutsエクステンションをお勧めします。あなたが望むレイアウトを定義することができます。各投稿にラジオボックスが表示されるので、それぞれに必要なレイアウトを指定できます。
あなたがWordPressのテーマを知っていればそれは簡単です。拡張機能、テーマレイアウト用のadd_theme_supportを含めてください。
それは彼のHybrid Coreフレームワークに含まれています、あるいはあなたはここでテーマレイアウト拡張クラスを見ることができます: https://github.com/justintadlock/hybrid-core/tree/master/inc
WordPress 4.7以降を使用している場合は、ブログの投稿にもページテンプレートを適用できます。テンプレート投稿タイプとして投稿を追加するだけです。
ページテンプレートで、次のように定義します。
<?php
/*
Template Name: Full-width layout
Template Post Type: post, page
*/
?>
これでポストエディタウィンドウに、そのテンプレートを表示しているページ属性セクションが表示されます。
私の考えでは、より良い方法は投稿テンプレートを使用することです。
その場合、特定の投稿からサイドバーを隠す/削除するには、次の手順に従ってください。
1 - あなたのテーマ投稿テンプレート、おそらくsingle.php
を開き、allを選択して内容をコピーします。
2 - セカンダリ投稿テンプレート、つまりnosidebar-posts.php
を作成し、single.php
のコンテンツを貼り付けて、1行目に次のコードを追加します。
<?php
/*
Template Name Posts: No Sidebar Posts
*/
?>
3 - nosidebar-posts.php
から<?php get_sidebar(); ?>
を削除するか、好きなように編集します。
4 - カスタムポストテンプレートプラグインをインストールします 。
5 - 投稿の編集に移動すると、[投稿テンプレートボックス]が表示されます。[サイドバーなし]を選択したら、作業は完了です。
投稿の編集ページでテンプレートを選択するだけで、投稿からサイドバーを削除したり、全角、サイドバーなしなどの複数のテンプレートを作成できます。