WordPressでカスタムシングル投稿テンプレートを作成する方法

読者の一人から、WordPressでカスタム単一投稿テンプレートを作成する方法について質問がありました。

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

この記事では、WordPressでカスタム単一投稿テンプレートを簡単に作成するための複数の方法を紹介します。ニーズに最適な方法を選択できます。

WordPressでカスタムシングル投稿テンプレートを作成する方法

カスタムシングル投稿テンプレートが必要なのはいつですか?

時には、WordPressウェブサイトの特定の投稿で、異なる見た目や雰囲気にしたい場合があります。例えば、注目の記事や特定のカテゴリの記事で異なるレイアウトを使用したい場合などです。

ここで WordPress のカスタムシングル投稿テンプレートが必要になります。

デフォルトでは、WordPressはWordPressテンプレート階層に基づいたシングル投稿テンプレートを使用します。すべてのテーマにはsingle.phpテンプレートが付属しており、これはデフォルトですべてのシングル投稿に使用されます。

一部のテーマには、追加のテンプレートやレイアウトの選択肢が含まれている場合もあります。

これは、カスタムページテンプレートを作成するのと非常によく似ています。ほとんどのWordPressテーマには、WordPressで投稿またはページを編集する際に使用できるページテンプレートも付属しています。

ページテンプレートの選択

とはいえ、WordPressでカスタムシングル投稿テンプレートを簡単に作成する方法を見てみましょう。複数の方法を紹介するので、あなたに最適な方法を使用できます。

ブロックエディターを使用した単一投稿テンプレートの作成

この方法は実際には投稿テンプレートを作成するわけではなく、柔軟性に限界があります。しかし、独自のシングル投稿レイアウトを保存して再利用する最も簡単な方法です。

デフォルトの WordPress ブロックエディター には、ブロックを保存して再利用できる組み込み機能が付属しています。そのような再利用可能なブロックの 1 つがグループブロックです。

グループブロックを使用すると、複数のブロックと投稿全体のレイアウトを1つのグループにまとめることができます。その後、このグループブロックを保存して、他の投稿で再利用できます。

グループブロックを使用してカスタム投稿テンプレートを保存する方法を見てみましょう。

まず、WordPressで新しい投稿を作成する必要があります。その後、コンテンツエリアにグループブロックを追加するだけです。

グループブロックを追加

これで、グループブロックにブロックを追加して、WordPressブログの単一投稿レイアウトを作成し始めることができます。

列、メディアとテキスト、カバー画像など、好きなブロックを追加できます。

グループにブロックを追加

作成したレイアウトに満足したら、マウスを上に移動してグループブロックを選択する必要があります。

3点ドットのメニューアイコンをクリックし、「再利用可能なブロックに追加」オプションを選択するだけです。

再利用可能なブロックを追加

次に、再利用可能なブロックの名前を指定し、「保存」ボタンをクリックします。WordPressは、グループブロック内のすべてのブロックを含む再利用可能なブロックを保存します。

ウェブサイト上の既存の投稿を編集したり、新しい投稿を作成したりできます。投稿編集画面で、新しいブロックを追加ボタンをクリックし、「再利用可能」タブで保存したブロックを探してください。

ブロックの再利用

ブロックを投稿に追加すると、WordPressは保存したすべてのブロックと設定を含むグループブロック全体を読み込みます。

この方法ではカスタムレイアウトを保存できます。ただし、テーマがシングル投稿をどのように処理するかを変更することはできません。

より柔軟性を持たせたい場合は、次のステップに進んでください。

SeedProdを使用したカスタム単一投稿テンプレートの作成

カスタムシングル投稿テンプレートを作成する最も簡単な方法は、SeedProdを使用することです。これは最高のWordPressウェブサイトビルダープラグインであり、コードを書かずに美しいウェブサイトレイアウトとカスタムテンプレートを作成できます。

SeedProd のドラッグ&ドロップビルダーを使用して、カスタムシングル投稿テンプレートを含む、完全にカスタムな WordPress テーマを作成できます。

まず、SeedProdプラグインをインストールして有効化する必要があります。詳細については、WordPressプラグインのインストール方法のステップバイステップガイドをご覧ください。

有効化したら、ライセンスキーを入力する必要があります。この情報はSeedProdウェブサイトのアカウントで確認できます。

SeedProd ライセンスキー

その後、カスタムWordPressテーマを作成します。これは、聞こえるよりもはるかに簡単です。

カスタムWordPressテーマの作成

まず、**SeedProd » Theme Builder** ページに移動する必要があります。ここでは、SeedProdの既製のテーマのいずれかを開始点として使用します。これにより、既存のWordPressテーマが新しいカスタムデザインに置き換えられます。

これは、「テーマ」ボタンをクリックすることで実行できます。

カスタムテーマを作成する

ウェブサイトの種類ごとにプロがデザインしたテーマのリストが表示されます。「モダンビジネス」、「マーケティングエージェンシー」、「住宅ローンブローカーテーマ」といったテンプレートがあります。

オプションを確認し、チェックマークアイコンをクリックしてニーズに最も合ったものを選択してください。

ニーズに合ったテーマを選択する

テーマを選択すると、SeedProdは単一ページ用と単一投稿用を含む、必要なすべてのテーマテンプレートを生成します。

各テンプレートは、魅力的なレイアウトとカスタマイズしやすいプレースホルダーコンテンツで設定されています。

SeedProdがテーマに必要なすべてのテンプレートを作成します

SeedProdでテーマを作成する方法の詳細については、コードなしでカスタムWordPressテーマを簡単に作成する方法に関するガイドをご覧ください。

デフォルトのシングル投稿テンプレートのカスタマイズ

SeedProdを使用すると、ドラッグアンドドロップのページビルダーを使用して、デフォルトの「単一投稿」テンプレートを簡単にカスタマイズできます。

テンプレートの下にある「デザインを編集」リンクをクリックするだけです。これにより、SeedProdのビジュアルエディターで投稿テンプレートが開きます。

シングル投稿テンプレートの下にある「デザインを編集」リンクをクリックしてください

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

右側にはテンプレートのプレビューがあり、リアルタイムで変更を確認できます。

SeedProd ビジュアルエディターブロックとセクション

投稿テンプレートのレイアウトをカスタマイズすることも簡単です。左側の列にある設定を表示するには、いずれかのブロックをクリックするだけです。

例えば、投稿タイトルをクリックすると、その設定が表示されます。これで、配置、フォントサイズ、見出しレベルなどを変更できます。

ブロックをクリックして設定を変更する

[高度]タブをクリックすると、フォントの色、間隔、その他のスタイルを変更できます。

左側の列からプレビュー列にドラッグすることで、追加のブロックを追加できます。SeedProd はテンプレートタグを使用して、投稿タイトル、アイキャッチ画像、コメントなどの動的なコンテンツを取得します。これにより、各投稿を個別に編集することなく、テンプレートにコンテンツを追加できます。

例えば、投稿コンテンツの末尾に投稿ブロックを追加できます。これにより、訪問者が現在の投稿を読み終えたときに読みたいと思う可能性のある最新の投稿が表示されます。このブロックは、このテンプレートを使用するすべての投稿に自動的に表示されます。

シングル投稿テンプレートの下部に投稿ブロックを追加する

次に、表示されるコンテンツをカスタマイズするために、投稿ブロックの設定を変更できます。

例えば、特定のカテゴリのコンテンツを表示したり、2列レイアウトを使用したり、表示される投稿数を変更したりできます。

SeedProd投稿ブロックの設定

さまざまなブロックを試したり、設定を調べたりする時間を自由に取ってください。

投稿テンプレートとして使用したいものを作成したら、右上にある緑色の ‘Save’ ボタンをクリックして保存します。その後、‘X’クローズアイコンをクリックしてSeedProdビジュアルエディターを閉じることができます。

完了したら、シングル投稿テンプレートを保存します

WordPressテーマの残りの部分も同様の方法でカスタマイズできます。しかし、少し助けが必要な場合は、SeedProdを使用してカスタムWordPressテーマを作成する方法に関するステップバイステップガイドを参照してください。

すべての外観に満足したら、「SeedProdテーマを有効にする」スイッチがオンになっていることを確認してください。これで、WordPressサイトはSeedProdテーマとカスタムシングル投稿テンプレートを使用するようになります。

SeedProd テーマを有効にする

テーマ設定を使用してカスタムシングル投稿レイアウトを作成する

多くの人気のWordPressテーマには、シングル投稿テンプレートの外観をカスタマイズするための組み込み設定が付属しています。

テーマがこれらの設定をサポートしている場合、投稿編集画面で見つけることができます。利用可能なオプションは、使用しているテーマによって異なる場合があります。

例えば、Astraテーマは、シングル投稿を編集する際にカスタマイズオプションを提供しています。これらのオプションを使用して、サイドバーを変更したり、ヘッダー、タイトル、メニューなどを非表示にしたりできます。

Astraテーマ シングル投稿テンプレートのカスタマイズ

一方で、トップWordPressテーマの多くには、すぐに使用できるテンプレートが用意されています。

テーマにシングル投稿テンプレートが含まれている場合、投稿の編集中に「テンプレート」または「投稿属性」パネルの下で見つけることができます。

シングル投稿作成時のテンプレート選択

これらのテンプレートは、設定不要でそのまま使用できる完全なレイアウトです。

コードを使用したカスタムシングル投稿テンプレートの手動作成

この方法は、テーマファイルを編集し、コードをコピー&ペーストし、オプションでカスタムCSSを追加する必要があるため、少し高度です。以前にこのようなことをしたことがない場合は、WordPressでコードをコピー&ペーストする方法に関するチュートリアルをご覧ください。

まず、コンピューターでメモ帳のようなプレーンテキストエディターを開き、以下のコードを貼り付けます。

<?php
/*
 * Template Name: Featured Article
 * Template Post Type: post, page, product
 */
  
 get_header();  ?>

このコードは、「注目の記事」という新しいテンプレートを定義し、投稿、ページ、および製品の投稿タイプで利用できるようにします。

このファイルをデスクトップにwpb-single-post.phpとして保存する必要があります。次に、このテンプレートをWordPressサイトに追加する必要があります。そのために、FTPクライアントを使用して、ファイルを現在のテーマフォルダにアップロードする必要があります。

WordPress管理画面にログインして、投稿を作成または編集できるようになりました。投稿編集画面を少し下にスクロールすると、新しい「テンプレート」パネルまたは「投稿属性」メタボックスが表示され、テンプレートを選択するオプションがあります。

カスタム投稿テンプレートを選択

「注目の記事」カスタムテンプレートがそこにリストされているのが表示されます。

現在、テンプレートは実質的に空なので、選択しても白い画面が表示されるだけです。

これを修正しましょう。

その最も簡単な方法は、テーマのsingle.phpファイルからコードをコピーして開始点として使用することです。single.phpファイルを開き、get_header()行以降のすべてをコピーする必要があります。

次に、このコードを wpb-single-post.php ファイルの末尾に貼り付ける必要があります。これでファイルを保存し、サーバーに再度アップロードできます。

ただし、これは現在のシングル投稿テンプレートとまったく同じように表示されます。これで、カスタムシングル投稿テンプレートの変更を開始できます。

独自のカスタムCSSクラスを追加したり、サイドバーを削除したり、フル幅テンプレートを作成したり、好きなようにできます。

カテゴリ別のカスタムシングル投稿テンプレートの作成

カテゴリに基づいたカスタムシングル投稿テンプレートを使用しますか?例えば、旅行カテゴリの投稿に写真カテゴリの投稿とは異なるレイアウトを与えることができます。

SeedProd Theme Builder またはコードのいずれかを使用してそれを行うことができます。

カテゴリ別にカスタムシングル投稿テンプレートを作成する (SeedProd を使用)

先ほど、SeedProd Theme Builderのデフォルトのシングル投稿テンプレートをカスタマイズする方法を説明しました。しかし、それだけではありません。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チャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

71 CommentsLeave a Reply

  1. ブロックエディターを使用したシングル投稿テンプレートの作成の例に、「再利用可能なブロックに追加」オプションが表示されません。

    アクティブなテーマを使用

    • Depending on the specific block you may see the option to add it to patterns instead which is likely what you are running into :)

      管理者

  2. コードを使用しようとすると、このメッセージが表示されます。

    警告: call_user_func_array() は、パラメータ 1 が有効なコールバック、関数 'my_single_template' が見つからないか、無効な関数名であることを期待しています。

    何か原因のアイデアはありますか?

  3. 全て順調ですが、デフォルトの single.php を壊してしまいます。

    言い換えれば、「一方、カテゴリに投稿を分類したが、そのカテゴリのテンプレートを作成しなかった場合、WordPressはテーマのデフォルトのsingle.phpテンプレートにフォールバックします。」は機能していません。

    何か解決策はありますか?

  4. こんにちは、手順に従おうとしています:
    single.phpファイルを開き、get_header()行以降のすべてをコピーします。
    以下:
    WordPressでカスタムシングル投稿テンプレートを手動で作成する
    しかし、そのファイルには「get_header()」関数がありません。

    • お客様固有のテーマには独自のコーディングがある場合があります。お客様固有のテーマのサポートに問い合わせることをお勧めします。彼らが支援できるはずです。

      管理者

  5. これについてありがとうございます。自動生成されたファイル(著者、見つかりませんなど)はすべてサイトテンプレートを使用していますが、ページ上に白いセクションと白いテキストが表示されます。また、ページの先頭から始まっているため(ヘッダーの後ろにほとんど隠れていて、白い背景に白いテキストが表示されています)。

    この記事がこの混乱を整理するのに役立つと思います。

    ありがとうございます

  6. カスタム投稿テンプレートのPHPファイルを作成した後、それがテンプレートとして機能するためには、新しい投稿をテンプレートとして保存する方法がないため、PHPファイルをコーディングする必要があると考えていますが、正しいですか?

    ご協力ありがとうございます。

    • その通りです。ページビルダーを使用していない場合、コーディングなしで設定する方法はありません。

      管理者

  7. こんにちは
    wpbeginnerはとてもとても良いです
    最高の記事を公開してくれてありがとう

  8. これはWPカスタム投稿ページに関する素晴らしいチュートリアルです。
    ご協力ありがとうございます。

  9. こんにちは、著者様

    ご指摘の通りに手順を踏みました。CPT アルバムがあります。single-albums.php の同じコードを別のファイル wpb-single-albums.php にコピーし、/*
    * Template Name: custom template
    * Template Post Type: albums
    */
    のようなテンプレートコードを追加し、必要な変更をいくつか加えました。しかし、投稿編集でこのテンプレートを選択した後も、デフォルトの single-albums.php ページが表示されます。

    どうすればこれを修正できますか?助けてください

    • 現在の作業テンプレートを確認して、投稿タイプが正しいことを確認することをお勧めします。

      管理者

  10. 素晴らしい投稿をありがとうございます。2つの質問があります。シングル投稿テンプレートはカスタム投稿タイプテンプレートと同じですか?もし違う場合、カスタム投稿タイプテンプレートの作成方法を教えていただけますか?

  11. こんにちは
    投稿ありがとうございます。
    すべてを行い、希望通りに動作しました。
    しかし、小さな問題がありました。
    function.php にコードを追加した後、single.php がデータを表示しなくなりました。
    何かできることはありますか?

  12. こんにちは、チュートリアルをありがとうございます…

    チュートリアルに従ってカスタム投稿タイプを作成しました。しかし、コメントで問題が発生しています。コメントを送信すると検索ページにリダイレクトされてしまいます。
    解決策を提案してください。
    よろしくお願いします。

  13. こんにちは。

    I’m using this & enjoying it greatly! :)
    However, I’m finding the following warning in my error logs around this code:

    [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,…」で始まっているので、他に何をすればよいかわかりません。

    • That error is saying it wants SINGLE_PATH to be surrounded by single quotes (”) which you can do for that warning :)

      管理者

  14. そのため、あなたの手順に従ったところ、新しいカテゴリのスラッグのシングルページでは機能しましたが、デフォルトの single.php では機能しませんでした。

    どうすればこれを機能させることができますか?おそらく、デフォルトのsingle.phpパスが間違っているのでしょうか?

    ありがとうございます!

  15. こんにちは、

    これは考えすぎかもしれませんが…すべてのブログ投稿を同じように見せたい場合、レイアウトを作成し(Diviテーマを使用しています)、上記の最初の方法(single.phpの新しいバージョンを適切に名前を付けて作成する)を使用して、投稿を作成するたびにそれを選べばよいのでしょうか?それほど簡単ですか?

    また、カスタムCSSを追加するには、phpファイルに追加しますか?どのように追加しますか?どこに追加しますか?それに関する参照をまだ見つけていない部分です。すべてのブログ投稿を1つの方法で見せるという例に基づいて、それを行うことができますか?

    ありがとう

  16. 素晴らしいチュートリアルをありがとうございます。驚くほど機能していますが、新しいカテゴリでは機能しません。これらのカテゴリには特別なテンプレートがありません。残念ながら、デフォルトのsingle.phpファイルからコードを取得できません。動作させる方法について、ご協力いただけると幸いです。

  17. こんにちは、チュートリアルありがとうございます!

    質問があります。投稿ページにのみ適用されるカスタムCSSをどのように適用できますか?

    ありがとう

  18. すべてのデフォルトとして新しいテンプレートを作成したい場合はどうすればよいですか。投稿が作成されるたびに、デフォルトのテンプレートとして自動的に選択されるようにするには?

  19. コーディングや子テーマの手間なしに、その作業を行うためのプラグインがあると思います。この投稿でも調査して共有していただけたらよかったです。

  20. 私はあなたの方法を使用していますが、これらの投稿にカスタムCSSを設定できません。
    たとえば、function.phpでis_page_template('single-cat-news')をチェックすると、ステートメントがtrueにならず、この種の投稿に対するカスタムCSSが実行されません。この場合、どうすればよいですか?

    • 本当です。
      私もこの問題を抱えています。フルワイドテンプレートは投稿やページではうまく機能しますが、カスタム投稿タイプになると、CSSコードが機能せず、サイドバーなしの通常のページサイズに戻ってしまいます。
      この問題の解決策を見つけるのに苦労しています。

  21. これについて、もう少しヘルプが必要です…

    このページの指示(および私のコメントで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;
        }
      
  22. 「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」の両方を選択しました。

  23. Im viewing your Blog from last 2 years. I explored whole web to find this but i got the correct working code from here i just love your Blog keep it up :)

  24. 特定のカテゴリ内の単一投稿にカスタム投稿テンプレートを指定するためにこのアプローチを使用しているとき、特定のカテゴリのsingle-cat-WHATEVER.phpファイルが存在しない場合に、WordPressがsingle.phpにデフォルトで戻らないことに気づきました。

    関数が終了する前に次の行を追加することで、これを修正しました。

    else
    return 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; }

    これは正しいアプローチでしょうか?それとも、デフォルトの機能を壊してしまった他の原因があるのでしょうか?

  25. この分かりやすい「ハウツー」をありがとうございます。

    1点注意:CHILD THEMEを使用している場合、変更するには…

    define(SINGLE_PATH, TEMPLATEPATH . ‘/single’);

    宛先:

    define(SINGLE_PATH, get_stylesheet_directory() . ‘/single’);

    (「単一テンプレートフォルダへの定数パスを定義する」セクション内)は、親テーマのディレクトリではなく、子テーマのディレクトリで単一テンプレートがチェックされることを保証します。

    これが、上記の他のコメント投稿者の何人かで機能していない理由である可能性もあります。

    皆さん、頑張ってください!

    • ご協力いただき、誠にありがとうございました!なぜ子テーマではなく親テーマに常に誘導されていたのか疑問に思っていました。

  26. これは私にはうまくいきません。キャッシュをクリアした後でも、投稿エディタにテンプレートが表示されません。

  27. この記事をありがとうございます。
    このカスタム投稿テンプレートのレイアウトをさらにカスタマイズする方法、例えば投稿のコンテンツの前に画像を表示したり、フッターに画像を表示したりする方法を知りたいです。

  28. こんにちは。
    記事の下部にある投稿ページで、3つの項目の順序を変更する必要があります。
    1-ページネーションプラグイン。
    2-広告。
    3-ソーシャルシェアアイコン。

    以下のように(縦に)作成したいです:
    1-広告
    2-ソーシャルシェアアイコン
    3-ページネーションプラグイン

    どうすればできますか?

  29. 素晴らしいチュートリアルをありがとうございます。この件で困っています。functions.phpにコードを追加しましたが、単一投稿テンプレートが表示されません。関数を呼び出す必要がありますか、それともWordPressが自動的に行いますか?関数をデバッグする方法はありますか?

    特定のカテゴリの投稿をリンクしたときに、異なる表示にしたいだけです。

  30. WordPress のデフォルトの post.php を使用せずに、登録ユーザーが投稿できるカスタム投稿ページを作成したいと考えていました。

  31. こんにちは!このチュートリアルをありがとうございます。私はウェブデザイン初心者で、WordPressのテーマをすべて作成し始めました。私のウェブサイトではすべて正常に動作していますが、作成したテンプレートを使用するページを追加できるようにしたいと考えています(カタログの商品ページのようなもの)。しかし、その方法が全くわかりません。まず、ページテンプレートを作成し、その中に記事やページのコンテンツ(タイトル、テキスト、カスタムフィールドの値など)を表示するループを配置しようとしました。そのためにquery_postsを使用しましたが、postまたはpageのIDを「page_id=」または「p=」で指定する必要があり、これはテンプレートが特定の1ページ用であることを意味します。カタログに新しいページを追加するたびに、そのページ用のテンプレートを作成し、その中にページのIDを手動で指定する必要があり、私がやりたかったのは、カタログのすべてのページに単一のテンプレートを作成することでした…。
    そのため、解決策を探している間に、あなたの記事を見つけ、新しいシングルポストテンプレートを使用して投稿を作成しようとしましたが、リストからどのテンプレートを選択しても、投稿のURLにアクセスするとホームページが表示されてしまいます…。おそらくすべて間違っているのでしょうし、シングルポストが何であるかを理解しているかどうかも定かではありませんし、本当に私が必要としているものなのかどうかもわかりません…。私の問題を解決するために何をすべきか、あるいは助けになるチュートリアルがあれば、いくつかヒントをいただけると大変助かります。
    ありがとうございます。

    Pierrick

    • こんにちは、ピエリックさん。

      お客様の問題を完全に理解できているか確信がありません。しかし、単に任意のページで使用されるテンプレートを作成したいだけであれば、カスタムページテンプレートが適切なアプローチです。ユーザーが任意のページを表示できるようにしたいということは、query_posts を使用する必要がなく、ループは標準的なものから始まります。

      <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
      //
      		// Post Content here
      		//
      	} // end while
      } // end if
      ?>
      

      管理者

  32. こんにちは、

    WP 3.7.x のローカル環境があり、テンプレート投稿タイプ: post, page, product が利用できません。

    各投稿カテゴリに個別のカテゴリ PHP ファイルを作成するにはどうすればよいですか???

    single-{slug}.php
    category-{slug}.php

    全てうまくいかないようです

    何かヒントはありますか?

  33. カテゴリで動作するように設定しましたが、カテゴリのない投稿を選択すると、デフォルトのテンプレートが認識されず、投稿が表示されません。テーマに問題がある可能性があります。カテゴリテンプレートが存在しない場合にデフォルトとして使用する 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’;

  34. まさに探していたものでした。こんなにシンプルに説明してくれてありがとうございます!ただ、一つ質問があります。サイドバーを削除したのですが、以前あった場所に空のスペースができてしまいました。メインコンテンツセクションをそのスペース全体をカバーするように引き伸ばすにはどうすればよいですか?重ねて感謝します!

    • 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でフル幅ページを作成する方法については、当社のガイドをご覧ください。

      管理者

      • 迅速なご返信ありがとうございます!大変参考になりました!さて、もし次のように表示された場合:
        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

        • Lyssieさん、こんにちは。

          テーマは content-area クラスを使用してコンテンツブロックの幅を定義しています。インスペクトツールを使用すると、その幅を確認できるはずです。

  35. それは素晴らしい記事で、私のようなコーディングができない人間にも役立つはずです。テンプレートのカスタマイズは、テーマ全体を壊してしまうかもしれないので怖いことでしょう。子テーマでカスタムテンプレートを作成することをお勧めしますか、それともテーマで直接行うのは問題ありませんか。どうもありがとうございます。

    • ジョー、こんにちは。

      テーマの既存のファイルを変更することはありません。代わりに、新しいファイルを作成します。何か問題が発生した場合は、テンプレートを削除するだけで、サイトは元に戻ります。

      はい、子テーマを作成することは推奨されるベストプラクティスです。

      管理者

      • ファイルを子テーマに入れたのですが、ドロップダウンボックスには表示されますが、実際には適用されません。

返信する

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。