読者の一人から、WordPressでカスタム単一投稿テンプレートを作成する方法について質問がありました。
WPBeginnerでは、多くのウェブサイト所有者が、個々の投稿にユニークなレイアウトを使用してブログを強化するお手伝いをしてきました。カスタム単一投稿テンプレートを使用すると、ブログ投稿に異なるデザインを適用でき、それぞれに独自のスタイルを与えることができます。多くのWordPressテーマにはいくつかのページテンプレートが用意されていますが、必要に応じて独自のテンプレートを作成することもできます。
この記事では、WordPressでカスタム単一投稿テンプレートを簡単に作成するための複数の方法を紹介します。ニーズに最適な方法を選択できます。

カスタムシングル投稿テンプレートが必要なのはいつですか?
場合によっては、WordPressウェブサイトの特定の投稿で、見た目や雰囲気を変えたいと思うことがあります。例えば、注目の記事や特定のカテゴリの記事に異なるレイアウトを使用したい場合があります。
ここで WordPress のカスタムシングル投稿テンプレートが必要になります。
デフォルトでは、WordPressはWordPressテンプレート階層に基づいた単一投稿テンプレートを使用します。すべてのテーマにはsingle.phpテンプレートが付属しており、これはすべての単一投稿のデフォルトとして使用されます。
一部のテーマには、追加のテンプレートやレイアウトの選択肢が含まれている場合もあります。
これはカスタムページテンプレートの作成と非常によく似ています。ほとんどのWordPressテーマには、WordPressで投稿やページを編集する際に使用できるページテンプレートも付属しています。

とはいえ、WordPressでカスタムシングル投稿テンプレートを簡単に作成する方法を見てみましょう。複数の方法を紹介するので、あなたに最適な方法を使用できます。
- ブロックエディターを使用して単一投稿テンプレートを作成する
- SeedProdを使用してカスタム単一投稿テンプレートを作成する
- テーマ設定を使用してシングル投稿レイアウトを作成する
- コードを使用してカスタムシングル投稿テンプレートを手動で作成する
- カテゴリごとのカスタムシングル投稿テンプレートの作成
- 特定の著者向けのカスタムシングル投稿テンプレートの作成
ブロックエディターを使用した単一投稿テンプレートの作成
この方法は実際には投稿テンプレートを作成するわけではなく、柔軟性に限界があります。しかし、独自のシングル投稿レイアウトを保存して再利用する最も簡単な方法です。
デフォルトのWordPressブロックエディターには、ブロックを保存して再利用できる組み込み機能が付属しています。そのような再利用可能なブロックの1つがグループブロックです。
グループブロックを使用すると、複数のブロックと投稿全体のレイアウトを1つのグループにまとめることができます。その後、このグループブロックを保存して、他の投稿で再利用できます。
グループブロックを使用してカスタム投稿テンプレートを保存する方法を見てみましょう。
まず、WordPressで新しい投稿を作成する必要があります。その後、コンテンツエリアにグループブロックを追加するだけです。

これで、グループブロックにブロックを追加して、WordPressブログの単一投稿レイアウトを作成できます。
列、メディアとテキスト、カバー画像など、好きなブロックを追加できます。

作成したレイアウトに満足したら、マウスを上に移動してグループブロックを選択する必要があります。
3点ドットのメニューアイコンをクリックし、「再利用可能なブロックに追加」オプションを選択するだけです。

次に、再利用可能なブロックの名前を指定し、「保存」ボタンをクリックします。WordPressは、グループブロック内のすべてのブロックを含む再利用可能なブロックを保存します。
ウェブサイト上の既存の投稿を編集したり、新しい投稿を作成したりできます。投稿編集画面で、新しいブロックを追加ボタンをクリックし、「再利用可能」タブで保存したブロックを探してください。

ブロックを投稿に追加すると、WordPressは保存したすべてのブロックと設定を含むグループブロック全体を読み込みます。
この方法ではカスタムレイアウトを保存できます。ただし、テーマがシングル投稿をどのように処理するかを変更することはできません。
より柔軟性を持たせたい場合は、次のステップに進んでください。
SeedProdを使用したカスタム単一投稿テンプレートの作成
カスタム単一投稿テンプレートを作成する最も簡単な方法は、SeedProdを使用することです。これは最高のWordPressウェブサイトビルダープラグインであり、コードを書かずに美しいウェブサイトレイアウトとカスタムテンプレートを作成できます。
SeedProd のドラッグ&ドロップビルダーを使用して、カスタムシングル投稿テンプレートを含む、完全にカスタムな WordPress テーマを作成できます。
まず、SeedProdプラグインをインストールして有効化する必要があります。詳細については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。
有効化したら、ライセンスキーを入力する必要があります。この情報はSeedProdウェブサイトのアカウントで確認できます。

その後、カスタムWordPressテーマを作成します。これは、聞こえるよりもはるかに簡単です。
カスタムWordPressテーマの作成
まず、**SeedProd » Theme Builder** ページに移動する必要があります。ここでは、SeedProdの既製のテーマのいずれかを開始点として使用します。これにより、既存のWordPressテーマが新しいカスタムデザインに置き換えられます。
これは、「テーマ」ボタンをクリックすることで実行できます。

ウェブサイトの種類ごとにプロがデザインしたテーマのリストが表示されます。「モダンビジネス」、「マーケティングエージェンシー」、「住宅ローンブローカーテーマ」といったテンプレートがあります。
オプションを確認し、チェックマークアイコンをクリックしてニーズに最も合ったものを選択してください。

テーマを選択すると、SeedProdは単一ページ用と単一投稿用を含む、必要なすべてのテーマテンプレートを生成します。
各テンプレートは、魅力的なレイアウトとカスタマイズしやすいプレースホルダーコンテンツで設定されています。

SeedProdでテーマを作成する方法の詳細については、コードなしでカスタムWordPressテーマを簡単に作成する方法に関するガイドをご覧ください。
デフォルトのシングル投稿テンプレートのカスタマイズ
SeedProdを使用すると、ドラッグアンドドロップのページビルダーを使用して、デフォルトの「単一投稿」テンプレートを簡単にカスタマイズできます。
テンプレートの下にある「デザインを編集」リンクをクリックするだけです。これにより、SeedProdのビジュアルエディターで投稿テンプレートが開きます。

SeedProdのビジュアルエディターには2列のレイアウトがあります。左側には、デザインに追加できるブロックとセクションがあります。
右側にはテンプレートのプレビューがあり、リアルタイムで変更を確認できます。

投稿テンプレートのレイアウトをカスタマイズすることも簡単です。左側の列にある設定を表示するには、いずれかのブロックをクリックするだけです。
例えば、投稿タイトルをクリックすると、その設定が表示されます。これで、配置、フォントサイズ、見出しレベルなどを変更できます。

[高度]タブをクリックすると、フォントの色、間隔、その他のスタイルを変更できます。
左側の列からプレビュー列にドラッグすることで、追加のブロックを追加できます。SeedProd はテンプレートタグを使用して、投稿タイトル、アイキャッチ画像、コメントなどの動的なコンテンツを取得します。これにより、各投稿を個別に編集することなく、テンプレートにコンテンツを追加できます。
例えば、投稿コンテンツの末尾に投稿ブロックを追加できます。これにより、訪問者が現在の投稿を読み終えたときに読みたいと思う可能性のある最新の投稿が表示されます。このブロックは、このテンプレートを使用するすべての投稿に自動的に表示されます。

次に、表示されるコンテンツをカスタマイズするために、投稿ブロックの設定を変更できます。
例えば、特定のカテゴリのコンテンツを表示したり、2列レイアウトを使用したり、表示される投稿数を変更したりできます。

さまざまなブロックを試したり、設定を調べたりする時間を自由に取ってください。
投稿テンプレートとして使用したいものを作成したら、右上にある緑色の ‘Save’ ボタンをクリックして保存します。その後、‘X’クローズアイコンをクリックしてSeedProdビジュアルエディターを閉じることができます。

残りのWordPressテーマも同様の方法でカスタマイズできます。しかし、少し助けが必要な場合は、SeedProdを使用してカスタムWordPressテーマを作成する方法に関するステップバイステップガイドを参照してください。
すべての外観に満足したら、「SeedProdテーマを有効にする」スイッチがオンになっていることを確認してください。これで、WordPressサイトはSeedProdテーマとカスタムシングル投稿テンプレートを使用するようになります。

テーマ設定を使用してカスタムシングル投稿レイアウトを作成する
多くの人気のWordPressテーマには、単一投稿テンプレートの外観をカスタマイズするための組み込み設定が付属しています。
テーマがこれらの設定をサポートしている場合、投稿編集画面で見つけることができます。利用可能なオプションは、使用しているテーマによって異なる場合があります。
例えば、Astraテーマは、単一投稿を編集する際にカスタマイズオプションを提供します。これらのオプションを使用して、サイドバーを変更したり、ヘッダー、タイトル、メニューなどを非表示にしたりできます。

一方、多くのトップWordPressテーマには、使用できるすぐに使えるテンプレートが付属しています。
テーマにシングル投稿テンプレートが含まれている場合、投稿の編集中に「テンプレート」または「投稿属性」パネルの下で見つけることができます。

これらのテンプレートは、設定不要でそのまま使用できる完全なレイアウトです。
コードを使用したカスタムシングル投稿テンプレートの手動作成
この方法は、テーマファイルを編集し、コードをコピー&ペーストし、オプションでカスタムCSSを追加する必要があるため、少し高度です。これを行ったことがない場合は、WordPressでコードをコピー&ペーストする方法に関するチュートリアルをご覧ください。
まず、コンピューターでメモ帳のようなプレーンテキストエディターを開き、以下のコードを貼り付けます。
<?php
/*
* Template Name: Featured Article
* Template Post Type: post, page, product
*/
get_header(); ?>
このコードは、「Featured Article」という新しいテンプレートを定義し、投稿、ページ、製品投稿タイプで利用できるようにします。
このファイルをデスクトップにwpb-single-post.phpとして保存する必要があります。次に、このテンプレートをWordPressサイトに追加する必要があります。これを行うには、FTPクライアントを使用してファイルを現在のテーマフォルダにアップロードする必要があります。
WordPress管理画面にログインして、投稿を作成または編集できるようになりました。投稿編集画面を少し下にスクロールすると、新しい「テンプレート」パネルまたは「投稿属性」メタボックスが表示され、テンプレートを選択するオプションがあります。

「注目の記事」カスタムテンプレートがそこにリストされているのが表示されます。
現在、テンプレートは実質的に空なので、選択しても白い画面が表示されるだけです。
これを修正しましょう。
その最も簡単な方法は、テーマのsingle.phpファイルからコードをコピーして開始点として使用することです。single.phpファイルを開き、get_header()行以降のすべてをコピーする必要があります。
次に、このコードを wpb-single-post.php ファイルの末尾に貼り付ける必要があります。これでファイルを保存し、サーバーに再度アップロードできます。
ただし、これは現在のシングル投稿テンプレートとまったく同じように表示されます。これで、カスタムシングル投稿テンプレートの変更を開始できます。
独自のカスタムCSSクラスを追加したり、サイドバーを削除したり、フル幅テンプレートを作成したり、好きなようにできます。
カテゴリ別のカスタムシングル投稿テンプレートの作成
カテゴリに基づいたカスタムシングル投稿テンプレートを使用しますか?例えば、旅行カテゴリの投稿に写真カテゴリの投稿とは異なるレイアウトを与えることができます。
SeedProd Theme Builder またはコードのいずれかを使用してそれを行うことができます。
カテゴリ別にカスタムシングル投稿テンプレートを作成する (SeedProd を使用)
以前は、SeedProdテーマビルダーのデフォルトのシングル投稿テンプレートをカスタマイズする方法を説明しました。しかし、それだけではありません。SeedProdを使用すると、たとえば投稿カテゴリごとに異なるレイアウトなど、カスタム投稿テンプレートを好きなだけ追加できます。
新しいシングル投稿テンプレートを追加するには、元の投稿テンプレートの下にある「複製」リンクをクリックするだけです。「Single Post – Copy」という新しいテンプレートが作成され、テーマテンプレートページの一番上に表示されます。

新しいテンプレートは、以前にデフォルトの単一投稿テンプレートをカスタマイズしたのと同じ方法でカスタマイズできます。テンプレートの「デザインを編集」リンクをクリックするだけで、SeedProdのビジュアルエディターを使用して好きなように変更できます。
テンプレートのカスタマイズが完了したら、どの投稿にこのテンプレートを使用すべきかを SeedProd が認識できるように、条件を追加する必要があります。この場合、特定のカテゴリ内の投稿を表示する際に表示させたいと考えています。

テンプレートの「条件を編集」リンクをクリックすると、新しいウィンドウが開きます。
ここで、テンプレートの名前と優先度を設定できます。デフォルトの単一投稿テンプレートの優先度は0なので、このテンプレートに高い優先度を設定して、一致するカテゴリに表示されるようにしてください。

「条件」の下で、2番目のドロップダウンメニューから「カテゴリを持つ」を選択し、最後のフィールドにカテゴリ名を入力します。たとえば、写真カテゴリの投稿のみにこのレイアウトを使用したい場合は、「写真」と入力します。
終了したら、「保存」ボタンをクリックすると、このテンプレートが一致するカテゴリのすべての投稿に使用されます。
これは、WordPressで複数のカスタム投稿テンプレートを作成する最も簡単な方法です。コードの知識は必要なく、テーマファイルを誤って破損させることもありません。
コードを使用してカテゴリ別にカスタム単一投稿テンプレートを作成する
これは、テーマファイルにコードを追加することに慣れている人向けの別の方法です。
まず、このコードをテーマのfunctions.phpファイルまたはコードスニペットプラグインに追加する必要があります。
/*
* Define a constant path to our single template folder
*/
define(SINGLE_PATH, TEMPLATEPATH . '/single');
/**
* Filter the single_template with our custom function
*/
add_filter('single_template', 'my_single_template');
/**
* Single template function which will choose our template
*/
function my_single_template($single) {
global $wp_query, $post;
/**
* Checks for single template by category
* Check by category slug and ID
*/
foreach((array)get_the_category() as $cat) :
if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
endforeach;
}
このコードは、WordPressが単一の投稿をリクエストしているかどうかを確認します。リクエストしている場合、WordPressにテーマの/single/フォルダでテンプレートを探すように指示します。
次に、このコードで定義されたテンプレートファイルを追加する必要があります。
FTPクライアントまたはcPanelのファイルマネージャーを使用してWordPressホスティングに接続し、/wp-content/themes/your-theme-folder/に移動します。
現在のテーマフォルダ内に、「single」という名前の新しいフォルダを作成する必要があります。次に、このフォルダを開き、新しいファイルを作成します。このファイルの名前をsingle-cat-{category-slug}にしてください。{category-slug}を実際のカテゴリのスラッグに置き換えてください。
たとえば、「ニュース」というカテゴリがある場合、single-cat-news.php ファイルを作成します。「旅行のヒント」というカテゴリがある場合は、テンプレート single-cat-travel-tips.php を作成します。といった具合です。

さて、これらのテンプレートファイルは完全に空になります。開始点として、テーマフォルダからsingle.phpファイルのコンテンツをコピーし、これらの各テンプレート内に貼り付けることができます。その後、目的の変更を加えるためにこれらのテンプレートを編集する必要があります。
完了したら、ウェブサイトに移動して投稿を表示できます。投稿は、その投稿が配置されているカテゴリに対して作成したテンプレートを使用します。
さて、投稿が「ニュース」と「旅行のヒント」の2つのカテゴリに分類されているとしましょう。WordPressは、アルファベット順で最初に表示される「ニュース」のテンプレートを自動的に表示します。
一方、カテゴリに投稿を保存したが、そのカテゴリのテンプレートを作成しなかった場合、WordPress はテーマのデフォルトの single.php テンプレートにフォールバックします。
特定の著者のためのカスタムシングル投稿テンプレートの作成
特定の著者が書いた投稿をウェブサイトで異なる表示にしたいと仮定しましょう。カテゴリに対して示したのと同じテクニックを使用して、コードでそれを行うことができます。
まず、このコードをテーマのfunctions.phpファイルまたはコードスニペットプラグインに追加する必要があります。
/**
* Define a constant path to our single template folder
*/
define(SINGLE_PATH, TEMPLATEPATH . '/single');
/**
* Filter the single_template with our custom function
*/
add_filter('single_template', 'my_single_author_template');
/**
* Single template function which will choose our template
*/
function my_single_author_template($single) {
global $wp_query, $post;
/**
* Checks for single template by author
* Check by user nicename and ID
*/
$curauth = get_userdata($wp_query->post->post_author);
if(file_exists(SINGLE_PATH . '/single-author-' . $curauth->user_nicename . '.php'))
return SINGLE_PATH . '/single-author-' . $curauth->user_nicename . '.php';
elseif(file_exists(SINGLE_PATH . '/single-author-' . $curauth->ID . '.php'))
return SINGLE_PATH . '/single-author-' . $curauth->ID . '.php';
}
次に、cPanel の FTP または cPanel ファイルマネージャーを使用してウェブサイトに接続し、/wp-content/themes/your-theme-folder/ に移動します。まだ /single/ という名前のフォルダを作成していない場合は、今すぐ作成してください。
このフォルダ内に、テンプレート名に作成者のユーザー名を使用してテンプレートを作成する必要があります。たとえば、single-author-johnsmith.phpです。
このテンプレートは空なので、テーマの single.php テンプレートの内容をコピーして貼り付け、開始点として使用できます。
これで、特定の著者が作成した投稿を表示するためにウェブサイトにアクセスできるようになりました。作成したテンプレートが使用されます。
この記事がWordPressでカスタムシングル投稿テンプレートを作成する方法を学ぶのに役立ったことを願っています。また、WordPressサイトへのウェブサイト訪問者を追跡する方法を学ぶか、サイトを成長させるための必須WordPressプラグインのリストを確認することもできます。
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。

リチャード・ワッツ
ブロックエディターを使用したシングル投稿テンプレートの作成の例に、「再利用可能なブロックに追加」オプションが表示されません。
アクティブなテーマを使用
WPBeginnerサポート
特定のブロックによっては、パターンに追加するオプションが表示される場合があります。おそらくそれが原因でしょう。
管理者
アッラー・ディッタ
wpbeginnerのような投稿テンプレートを作成したいのですが、可能ですか?
WPBeginnerサポート
デザインの一部が気に入った場合は、ご自身のサイトで再現することができます。
管理者
ジャスミン
コードを使用しようとすると、このメッセージが表示されます。
警告: call_user_func_array() は、パラメータ 1 が有効なコールバック、関数 'my_single_template' が見つからないか、無効な関数名であることを期待しています。
何か原因のアイデアはありますか?
WPBeginnerサポート
コード全体を正しくコピーしたことを確認してください。以下に役立つガイドがあります。
https://www.wpbeginner.com/beginners-guide/beginners-guide-to-pasting-snippets-from-the-web-into-wordpress/
管理者
イウリアン
全て順調ですが、デフォルトの single.php を壊してしまいます。
言い換えれば、「一方、カテゴリに投稿を分類したが、そのカテゴリのテンプレートを作成しなかった場合、WordPressはテーマのデフォルトのsingle.phpテンプレートにフォールバックします。」は機能していません。
何か解決策はありますか?
WPBeginnerサポート
テーマのサポートに問い合わせて、別のテンプレートを使用していないか確認する必要があるかもしれません。ご理解いただくために、以下の記事をご覧ください。
https://www.wpbeginner.com/wp-themes/wordpress-template-hierarchy-explained/
管理者
トーマス
こんにちは、手順に従おうとしています:
single.phpファイルを開き、get_header()行以降のすべてをコピーします。
以下:
WordPressでカスタムシングル投稿テンプレートを手動で作成する
しかし、そのファイルには「get_header()」関数がありません。
WPBeginnerサポート
お客様固有のテーマには独自のコーディングがある場合があります。お客様固有のテーマのサポートに問い合わせることをお勧めします。彼らが支援できるはずです。
管理者
ボブ
これについてありがとうございます。自動生成されたファイル(著者、見つかりませんなど)はすべてサイトテンプレートを使用していますが、ページ上に白いセクションと白いテキストが表示されます。また、ページの先頭から始まっているため(ヘッダーの後ろにほとんど隠れていて、白い背景に白いテキストが表示されています)。
この記事がこの混乱を整理するのに役立つと思います。
ありがとうございます
WPBeginnerサポート
この記事がお役に立てば幸いです。また、テーマのサポートに問い合わせれば、さらにサポートを受けられるかもしれません。
管理者
ジョジョ
Beaver Builderでテンプレートオプションが見つかりません。
WPBeginnerサポート
コンテンツパネルの右上セクションにテンプレートが表示されるはずです
管理者
ジョン
カスタム投稿テンプレートのPHPファイルを作成した後、それがテンプレートとして機能するためには、新しい投稿をテンプレートとして保存する方法がないため、PHPファイルをコーディングする必要があると考えていますが、正しいですか?
ご協力ありがとうございます。
WPBeginnerサポート
その通りです。ページビルダーを使用していない場合、コーディングなしで設定する方法はありません。
管理者
アリ・ジャハニ
こんにちは
wpbeginnerはとてもとても良いです
最高の記事を公開してくれてありがとう
WPBeginnerサポート
私たちのコンテンツを気に入っていただきありがとうございます
管理者
グレゴリー
これはWPカスタム投稿ページに関する素晴らしいチュートリアルです。
ご協力ありがとうございます。
WPBeginnerサポート
どういたしまして。チュートリアルがお役に立てて嬉しいです。
管理者
ハリパル・レッディ
こんにちは、著者様
ご指摘の通りに手順を踏みました。CPT アルバムがあります。single-albums.php の同じコードを別のファイル wpb-single-albums.php にコピーし、/*
* Template Name: custom template
* Template Post Type: albums
*/
のようなテンプレートコードを追加し、必要な変更をいくつか加えました。しかし、投稿編集でこのテンプレートを選択した後も、デフォルトの single-albums.php ページが表示されます。
どうすればこれを修正できますか?助けてください
WPBeginnerサポート
現在の作業テンプレートを確認して、投稿タイプが正しいことを確認することをお勧めします。
管理者
アリス
素晴らしい投稿をありがとうございます。2つの質問があります。シングル投稿テンプレートはカスタム投稿タイプテンプレートと同じですか?もし違う場合、カスタム投稿タイプテンプレートの作成方法を教えていただけますか?
WPBeginnerサポート
必要に応じて異なるものにすることができますが、投稿タイプ専用のものを作成しない場合、WordPressはデフォルトで投稿テンプレートを使用します。こちらの記事をご覧ください:https://www.wpbeginner.com/wp-themes/wordpress-template-hierarchy-explained/
管理者
アジズ
こんにちは
投稿ありがとうございます。
すべてを行い、希望通りに動作しました。
しかし、小さな問題がありました。
function.php にコードを追加した後、single.php がデータを表示しなくなりました。
何かできることはありますか?
WPBeginnerサポート
記事内のコードの後で説明しているように、フォルダを作成する必要があります。
管理者
ビネシュ
こんにちは、チュートリアルをありがとうございます…
チュートリアルに従ってカスタム投稿タイプを作成しました。しかし、コメントで問題が発生しています。コメントを送信すると検索ページにリダイレクトされてしまいます。
解決策を提案してください。
よろしくお願いします。
WPBeginnerサポート
404ページにリダイレクトされる場合は、こちらのトラブルシューティング記事をご覧ください:https://www.wpbeginner.com/wp-tutorials/how-to-fix-wordpress-posts-returning-404-error/
管理者
マイク
こんにちは。
これを使用しており、大変楽しんでいます!
ただし、このコードに関するエラーログに次の警告が表示されています。
[warn] mod_fcgid: stderr: PHP Warning: Use of undefined constant SINGLE_PATH – assumed ‘SINGLE_PATH’ (this will throw an Error in a future version of PHP)
それを修正する方法について何か考えはありますか?
スニペットが「define(SINGLE_PATH,…」で始まっているので、他に何をすればよいかわかりません。
WPBeginnerサポート
そのエラーは、SINGLE_PATH をシングルクォート(”)で囲む必要があると言っています。その警告については、そのようにすることができます。
管理者
ジョジョ
そのため、あなたの手順に従ったところ、新しいカテゴリのスラッグのシングルページでは機能しましたが、デフォルトの single.php では機能しませんでした。
どうすればこれを機能させることができますか?おそらく、デフォルトのsingle.phpパスが間違っているのでしょうか?
ありがとうございます!
WPBeginnerサポート
デフォルトのsingle.phpファイルを編集したい場合は、まず子テーマを作成する必要があります:https://www.wpbeginner.com/wp-themes/how-to-create-a-wordpress-child-theme-video/
そうすれば、独自のsingle.phpを作成したときに変更が削除される心配なく、single.phpファイルを編集できます。
管理者
ジャグディッシュ
私はあなたの読者の1人です。あなたのブログが大好きです <3
WPBeginnerサポート
ありがとうございます。当社のコンテンツをお楽しみいただけて嬉しいです。
管理者
ヒル
こんにちは、
これは考えすぎかもしれませんが…すべてのブログ投稿を同じように見せたい場合、レイアウトを作成し(Diviテーマを使用しています)、上記の最初の方法(single.phpの新しいバージョンを適切に名前を付けて作成する)を使用して、投稿を作成するたびにそれを選べばよいのでしょうか?それほど簡単ですか?
また、カスタムCSSを追加するには、phpファイルに追加しますか?どのように追加しますか?どこに追加しますか?それに関する参照をまだ見つけていない部分です。すべてのブログ投稿を1つの方法で見せるという例に基づいて、それを行うことができますか?
ありがとう
WPBeginnerサポート
ブログ投稿はデフォルトでsingle.phpを使用し、そのように同じように表示されるはずですが、見た目を変更したい場合はカスタム投稿テンプレートを作成できます。カスタムCSSについては、こちらの記事をご覧ください:https://www.wpbeginner.com/plugins/how-to-easily-add-custom-css-to-your-wordpress-site/
管理者
マウゴジャータ
素晴らしいチュートリアルをありがとうございます。驚くほど機能していますが、新しいカテゴリでは機能しません。これらのカテゴリには特別なテンプレートがありません。残念ながら、デフォルトのsingle.phpファイルからコードを取得できません。動作させる方法について、ご協力いただけると幸いです。
クリストファー・クローン
素晴らしいチュートリアルです。ありがとうございます!
スティーブ
こんにちは、チュートリアルありがとうございます!
質問があります。投稿ページにのみ適用されるカスタムCSSをどのように適用できますか?
ありがとう
トラヴィス
すべてのデフォルトとして新しいテンプレートを作成したい場合はどうすればよいですか。投稿が作成されるたびに、デフォルトのテンプレートとして自動的に選択されるようにするには?
ジャロッド
作成したいテンプレートのコードを single.php に配置するだけです。
ジェイ
コーディングや子テーマの手間なしに、その作業を行うためのプラグインがあると思います。この投稿でも調査して共有していただけたらよかったです。
マフブブ
@JAY、自分でやればよかったのに?
ペイマン
私はあなたの方法を使用していますが、これらの投稿にカスタムCSSを設定できません。
たとえば、function.phpでis_page_template('single-cat-news')をチェックすると、ステートメントがtrueにならず、この種の投稿に対するカスタムCSSが実行されません。この場合、どうすればよいですか?
ビクラム
本当です。
私もこの問題を抱えています。フルワイドテンプレートは投稿やページではうまく機能しますが、カスタム投稿タイプになると、CSSコードが機能せず、サイドバーなしの通常のページサイズに戻ってしまいます。
この問題の解決策を見つけるのに苦労しています。
マイク
これについて、もう少しヘルプが必要です…
このページの指示(および私のコメントで2017年12月2日と2017年12月12日に記載された小さな変更)に従った結果、これを確実に機能させることができました。
ただし、この方法でカスタムテンプレートを呼び出すと、body_class クラスの呼び出しに登録されないという問題が発生しました。
例えば、カスタムテンプレートをページに設定した場合(編集ビューの「ページ属性」サイドバーにあるWordPressの「テンプレート」ドロップダウンを使用している場合)、出力されるbody_classesにはそのテンプレート名が含まれます。
例えば:
<body class="page-template-my_custom_template page page-id-2..."しかし、この方法を使用すると、bodyクラスは次のように返されるだけです。
<body class="page-template-default page page-id-2..."カスタム単一投稿テンプレートをボディクラスに反映させる方法について、何かアイデアはありますか?
マイク
ここに回答があります(少なくとも私のテーマでは。あなたの経験は異なる場合があります)。
次のコードを [b]functions.php[/b] に追加したところ、うまくいきました。
add_filter('body_class','add_category_to_single'); function add_category_to_single($classes) { if (is_single() ) { global $post; foreach((get_the_category($post->ID)) as $category) { // add category slug to the $classes array, starting with 'category-'... $classes[] = "category-$category->category_nicename"; } } // return the $classes array return $classes; }ヅンクス・コーン
「News」のためにsingle-cat-news.phpファイルを作成しました。「News」カテゴリには「Camera」と「Smartphone」という2つの子カテゴリがあります。「Smartphone」の投稿はsingle-cat-news.php(アルファベット順でNの後のS)に表示されますが、「Camera」の投稿はデフォルトのsingle.php(アルファベット順でNの前のC)に表示されます。「Camera」の投稿もsingle-cat-news.phpに表示させたいのですが、どうすればよいですか?投稿に「News」と「Camera」の両方を選択しました。
サルマド・ガルデジ
2年前からあなたのブログを見ています。これを見つけるためにウェブ全体を探しましたが、ここで正しい動作コードを見つけました。あなたのブログが大好きです。続けてください。
マイク
特定のカテゴリ内の単一投稿にカスタム投稿テンプレートを指定するためにこのアプローチを使用しているとき、特定のカテゴリのsingle-cat-WHATEVER.phpファイルが存在しない場合に、WordPressがsingle.phpにデフォルトで戻らないことに気づきました。
関数が終了する前に次の行を追加することで、これを修正しました。
elsereturn SINGLE_PATH . '/single.php';
したがって、このコードは次のようになります。
/**
* カテゴリごとの単一テンプレートをチェックします
* カテゴリスラッグとIDでチェックします
*/
foreach((array)get_the_category() as $cat) :
if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
endforeach; }
このようになりました:
/**
* カテゴリごとの単一テンプレートをチェックします
* カテゴリスラッグとIDでチェックします
*/
foreach((array)get_the_category() as $cat) :
if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
else
return SINGLE_PATH . '/single.php';
endforeach; }
これは正しいアプローチでしょうか?それとも、デフォルトの機能を壊してしまった他の原因があるのでしょうか?
マイク
この分かりやすい「ハウツー」をありがとうございます。
1点注意:CHILD THEMEを使用している場合、変更するには…
define(SINGLE_PATH, TEMPLATEPATH . ‘/single’);
宛先:
define(SINGLE_PATH, get_stylesheet_directory() . ‘/single’);
(「単一テンプレートフォルダへの定数パスを定義する」セクション内)は、親テーマのディレクトリではなく、子テーマのディレクトリで単一テンプレートがチェックされることを保証します。
これが、上記の他のコメント投稿者の何人かで機能していない理由である可能性もあります。
皆さん、頑張ってください!
ステファニー・ルイス
ご協力いただき、誠にありがとうございました!なぜ子テーマではなく親テーマに常に誘導されていたのか疑問に思っていました。
アシュリー
これは私にはうまくいきません。キャッシュをクリアした後でも、投稿エディタにテンプレートが表示されません。
オラインカ
この記事をありがとうございます。
このカスタム投稿テンプレートのレイアウトをさらにカスタマイズする方法、例えば投稿のコンテンツの前に画像を表示したり、フッターに画像を表示したりする方法を知りたいです。
オウサマ
こんにちは。
記事の下部にある投稿ページで、3つの項目の順序を変更する必要があります。
1-ページネーションプラグイン。
2-広告。
3-ソーシャルシェアアイコン。
以下のように(縦に)作成したいです:
1-広告
2-ソーシャルシェアアイコン
3-ページネーションプラグイン
どうすればできますか?
リンダ・ホライナー
素晴らしいチュートリアルをありがとうございます。この件で困っています。functions.phpにコードを追加しましたが、単一投稿テンプレートが表示されません。関数を呼び出す必要がありますか、それともWordPressが自動的に行いますか?関数をデバッグする方法はありますか?
特定のカテゴリの投稿をリンクしたときに、異なる表示にしたいだけです。
タウフィク・マフムド
WordPress のデフォルトの post.php を使用せずに、登録ユーザーが投稿できるカスタム投稿ページを作成したいと考えていました。
ピエリック
こんにちは!このチュートリアルをありがとうございます。私はウェブデザイン初心者で、WordPressのテーマをすべて作成し始めました。私のウェブサイトではすべて正常に動作していますが、作成したテンプレートを使用するページを追加できるようにしたいと考えています(カタログの商品ページのようなもの)。しかし、その方法が全くわかりません。まず、ページテンプレートを作成し、その中に記事やページのコンテンツ(タイトル、テキスト、カスタムフィールドの値など)を表示するループを配置しようとしました。そのためにquery_postsを使用しましたが、postまたはpageのIDを「page_id=」または「p=」で指定する必要があり、これはテンプレートが特定の1ページ用であることを意味します。カタログに新しいページを追加するたびに、そのページ用のテンプレートを作成し、その中にページのIDを手動で指定する必要があり、私がやりたかったのは、カタログのすべてのページに単一のテンプレートを作成することでした…。
そのため、解決策を探している間に、あなたの記事を見つけ、新しいシングルポストテンプレートを使用して投稿を作成しようとしましたが、リストからどのテンプレートを選択しても、投稿のURLにアクセスするとホームページが表示されてしまいます…。おそらくすべて間違っているのでしょうし、シングルポストが何であるかを理解しているかどうかも定かではありませんし、本当に私が必要としているものなのかどうかもわかりません…。私の問題を解決するために何をすべきか、あるいは助けになるチュートリアルがあれば、いくつかヒントをいただけると大変助かります。
ありがとうございます。
Pierrick
WPBeginnerサポート
こんにちは、ピエリックさん。
お客様の問題を完全に理解できているか確信がありません。しかし、単に任意のページで使用されるテンプレートを作成したいだけであれば、カスタムページテンプレートが適切なアプローチです。ユーザーが任意のページを表示できるようにしたいということは、query_posts を使用する必要がなく、ループは標準的なものから始まります。
WordPressで1クリックで使用
管理者
アレックス
こんにちは、
WP 3.7.x のローカル環境があり、テンプレート投稿タイプ: post, page, product が利用できません。
各投稿カテゴリに個別のカテゴリ PHP ファイルを作成するにはどうすればよいですか???
single-{slug}.php
category-{slug}.php
全てうまくいかないようです
何かヒントはありますか?
マーク
カテゴリで動作するように設定しましたが、カテゴリのない投稿を選択すると、デフォルトのテンプレートが認識されず、投稿が表示されません。テーマに問題がある可能性があります。カテゴリテンプレートが存在しない場合にデフォルトとして使用する single.php を親ディレクトリにハードコードするにはどうすればよいですか?
single.phpを/single/single-cat-name.phpファイルにコピーすると完全に機能しますが、40以上の重複ファイルは欲しくありません。
エリック・ベッソ
まず single.php を /single フォルダにコピーします
then include this code right before the endforeach;
else
return SINGLE_PATH . ‘/single.php’;
ガリカイ・ヅォマ
これは私にとって大変助けになりました。
リッシー
まさに探していたものでした。こんなにシンプルに説明してくれてありがとうございます!ただ、一つ質問があります。サイドバーを削除したのですが、以前あった場所に空のスペースができてしまいました。メインコンテンツセクションをそのスペース全体をカバーするように引き伸ばすにはどうすればよいですか?重ねて感謝します!
WPBeginnerサポート
Lyssieさん、こんにちは。
それは、お使いのテーマがサイドバーに対してコンテンツエリアの幅を定義しているためです。インスペクトツールを使用して、コンテンツエリアがどのCSSクラスを使用しているかを確認し、カスタムCSSを追加してフル幅になるように調整する必要があります。
.page-template-full-width .content-area { width: 100%; margin: 0px; border: 0px; padding: 0px; } .page-template-full-width .site { margin:0px; }WordPressで1クリックで使用
WordPressでフル幅ページを作成する方法に関するガイドをご覧ください。
管理者
リッシー
迅速なご返信ありがとうございます!大変参考になりました!さて、もし次のように表示された場合:
div id=”primary” class=”content-area”>
インスペクトツールを使用すると、私のコンテンツエリアが使用しているクラスは何ですか?
リッシー
おっと、うまくいきませんでした。
div id=”primary” class=”content-area”
main id=”main” class=”site-main” role=”main”
article id="post-4773" class="post-4773 post type-post status-draft format-standard hentry category-travel-2" div id="featured-image" /div
WPBeginnerサポート
Lyssieさん、こんにちは。
テーマは content-area クラスを使用してコンテンツブロックの幅を定義しています。インスペクトツールを使用すると、その幅を確認できるはずです。
ジョー・イー
それは素晴らしい記事で、私のようなコーディングができない人間にも役立つはずです。テンプレートのカスタマイズは、テーマ全体を壊してしまうかもしれないので怖いことでしょう。子テーマでカスタムテンプレートを作成することをお勧めしますか、それともテーマで直接行うのは問題ありませんか。どうもありがとうございます。
WPBeginnerサポート
ジョー、こんにちは。
テーマの既存のファイルを変更することはありません。代わりに、新しいファイルを作成します。何か問題が発生した場合は、テンプレートを削除するだけで、サイトは元に戻ります。
はい、子テーマを作成することは推奨されるベストプラクティスです。
管理者
ダニエル
ファイルを子テーマに入れたのですが、ドロップダウンボックスには表示されますが、実際には適用されません。