最も必要とされている時に、信頼できるWordPressチュートリアルを。
WordPress入門ガイド
WPBカップ
2500万人以上
当社のプラグインを使用しているウェブサイト
16+
WordPress経験年数
3000+
専門家によるWordPressチュートリアル

特定のカスタムフィールドがある場合のみWordPress投稿を表示する方法

カスタムフィールドに基づいて特定のWordPress投稿を表示する必要があるときがありますよね?私たちは経験済みです。

WordPressを始めたばかりの頃、特に特定の情報を持つ投稿を表示したいだけなのに、コードスニペットを見るとどれも威圧的に感じられました。

しかし、良いニュースがあります。何千人ものWordPress初心者の方々を支援してきた経験から、カスタムフィールドのフィルタリングのように技術的に聞こえるものでも、恐れる必要はないことがわかりました。

実際、簡単なコード方法をステップバイステップでご紹介します。

このソリューションは、特定の基準に基づいて通常のブログ投稿またはカスタム投稿タイプを公開する場合でも、完全に機能します。

特定のカスタムフィールドがある場合のみWordPress投稿を表示する方法

📌 簡単な注意点: このチュートリアルは、特定のカスタムフィールドに値が入力されている場合にWordPress投稿を表示するためのものです。

WordPressの投稿のフロントエンドにカスタムフィールドを表示したい場合は、WordPressテーマでカスタムフィールドを表示する方法に関するガイドをお読みください。

特定のカスタムフィールドを持つWordPress投稿を表示する理由

投稿をWordPressウェブサイトに作成する際に、カスタムフィールドを使用して投稿に追加のメタデータを追加できます。

メタデータとは、投稿に追加できる追加情報のことです。たとえば、書評を書いている場合、「著者名」や「星評価」のカスタムフィールドを追加できます。

カスタムフィールドはWordPressの高度な概念であり、WordPressでカスタムフィールドを追加する方法はたくさんあります。投稿「WordPressカスタムフィールド101:ヒント、トリック、ハック」では、カスタムフィールドの使用方法と表示方法に関する多くの役立つヒントが見つかります。

カスタムフィールドを使用して投稿にメタデータを追加できます

ユーザーの1人から、特定のカスタムフィールドが存在する場合にのみWordPress投稿を表示する方法について質問がありました。これは、特定のカスタムフィールドや値を含むすべての投稿を一覧表示するカスタムページを作成したい場合に役立つ可能性があります。

回答を返信した後、より多くのWordPress.orgコミュニティが恩恵を受けられるように、皆と共有するのが最善だと考えました。

WordPressテーマファイルの編集:留意すべきこと

このチュートリアルを適切にフォローするために、以下の点に注意してください。

  1. このチュートリアルでは、WordPressテーマファイルをコードで編集する必要があります。そのため、初心者には最適ではありません。初めての場合は、WordPressでコードをコピーして貼り付ける方法に関するガイドを読む必要があります。
  2. エラーが発生した場合にライブサイトに影響が出ないように、ウェブサイトのバックアップを作成するか、ステージング環境を使用することをお勧めします。これは、テーマファイルにコードを追加することになり、危険を伴う可能性があるためです。
  3. 後でコードを追加する場所を把握するために、WordPressテンプレート階層の仕組みを理解することをお勧めします。
  4. また、WordPressクエリでこれらのパラメータを呼び出すため、WordPressループの仕組みに慣れておく必要があります。

また、このチュートリアルはクラシックWordPressテーマでのみ機能することに注意してください。ブロックテーマには異なるテーマファイルセットがあります。

ということで、特定のカスタムフィールドを持つWordPress投稿のみを表示する方法を見てみましょう。

特定のカスタムフィールドに基づいて投稿をフィルタリングする方法

使用する必要があるコードを示す前に、コードを追加する必要があるテーマファイルを知る必要があります。最も可能性が高いのは、index.php、archive.php、またはpage.phpなどのページテンプレートです。

例えば、Twenty Twenty-Oneテーマのindex.phpファイルに追加したいとします。現在、そのファイルのWordPressループ部分は次のようになっています。

<?php
if ( have_posts() ) {

// Load posts loop.
	while ( have_posts() ) {
		the_post();

		get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
	}

	// Previous/next page navigation.
	twenty_twenty_one_the_posts_navigation();

} else {

	// If no content, include the "No posts found" template.
	get_template_part( 'template-parts/content/content-none' );

}

get_footer();

このコードは、デフォルトのWordPressループ(have_posts() および the_post())を使用して投稿を表示します。この方法は、ほとんどの標準的なWordPressテーマに適しており、カスタムフィルタリングや並べ替えなしで投稿を表示するために使用されます。

さて、上記の例のようにカスタムフィールド「color」を使用するとします。そのコード全体を以下のスニペットに置き換える必要があります。

<?php
// The Query to show a specific Custom Field
$the_query = new WP_Query('meta_key=color');

// Load posts loop.
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();

        get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
    }

    // Previous/next page navigation.
    twenty_twenty_one_the_posts_navigation();

} else {

    // If no content, include the "No posts found" template.
    get_template_part( 'template-parts/content/content-none' );

}

// Reset Post Data
wp_reset_postdata();

get_footer();

この新しいコードでは、特定のカスタムフィールド(この場合はカスタムフィールド「color」を持つ任意の投稿)を持つ投稿を取得するためのカスタムクエリを導入しました。

次に、カスタムクエリによって取得された投稿を反復処理するためにカスタムループ(if ($the_query->have_posts()))を使用し、最初のスニペットと同じ方法で各投稿のコンテンツを表示します。

WordPressがカスタムクエリの後にすべての投稿を正しく表示するようにwp_reset_postdata() 関数を追加しました。これにより、サイトがスムーズに機能し、ユーザーに適切なコンテンツが表示されます。

では、「color」カスタムフィールドに「blue」のような特定の値を持つ投稿を見つけたい場合はどうすればよいでしょうか?そのためには、クエリに「meta_value」パラメータを追加するだけです。

更新されたクエリコードは次のようになります。

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );

💡プロのヒント: meta_compareパラメータを使用すると、さらに高度なフィルタリングが可能です。これにより、値と一致しない投稿を見つけることができます。

例えば、色が「青」ではないすべての投稿を表示するには、クエリは次のようになります。

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '!=' ) );

!=は、WordPressに「color」フィールドが存在するが、「blue」と等しくないすべての投稿を見つけるように指示します。

公式のWordPress開発者ドキュメントで見つけることができる、他にも多くの比較演算子があります。

ページテンプレートのPHPファイルにコードを保存したら、フロントエンドでWordPressサイトを確認して、コードが機能しているか確認できます。

特定のカスタムフィールドを持つ投稿を表示することに関するよくある質問

特定のカスタムフィールドのみを持つ投稿を表示することについて、読者からよく寄せられる質問をいくつかご紹介します。

テーマファイルを編集せずにこれを行う方法はありますか?

はい、そしてほとんどのユーザーにお勧めする方法です。たとえばWPCodeのようなプラグインを使用すると、テーマのファイルを直接編集せずに、このようなカスタムPHPスニペットを安全に追加できます。

これにより、サイトがエラーから保護され、テーマを更新してもカスタマイズが失われないことが保証されます。

複数のカスタムフィールドで投稿をフィルタリングできますか?

できます。WP_Query関数は非常に強力で、より複雑な引数を受け入れることができます。「meta_query」パラメータを使用すると、複数のカスタムフィールドを一度に一致させる条件の配列を構築できます。

この方法はブロックテーマでも機能しますか?

この特定のチュートリアルでは、index.phparchive.phpのようなファイルを編集するクラシックテーマに焦点を当てています。ブロックテーマはサイトエディターを使用し、これらのファイルには依存しません。

ブロックテーマで同様の結果を達成するには、Query Loopブロックとその組み込みフィルタリングオプションを使用します。これらはカスタムコードを必要としません。

「meta_key」と「meta_value」の違いは何ですか?

「meta_key」は、「色」や「ステータス」のようなラベルの名前と考えてください。「meta_value」は、「青」や「公開済み」のような、そのフィールドに入力された実際のデータです。

キーを使用するとカスタムフィールドを持つ投稿をすべて見つけることができ、値を使用するとその特定の情報を持つ投稿をすべて見つけることができます。

WordPressサイトをカスタマイズするその他の方法を学ぶ

WordPressページをカスタマイズするためのその他の方法を以下に示します。

このチュートリアルで、特定のカスタムフィールドを持つWordPress投稿のみを表示する方法を学べたことを願っています。また、WordPressウェブサイトを編集する方法の完全ガイドや、WordPress向けの最高のFigmaプラグインの専門家による厳選リストもご覧ください。

この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterFacebookでも私たちを見つけることができます。

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

究極のWordPressツールキット

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

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

11 CommentsLeave a Reply

  1. 質問があります、もし単一の投稿とカスタムフィールドを表示したい場合、どうすればよいですか?
    特定のカスタムフィールドを持つ投稿を表示したくありません。投稿のすべてのカスタムフィールドを表示したいです。

  2. こんにちは、役立つチュートリアルをありがとうございます。質問があります。WordPressのウェブサイトで「meta_country」という名前のメタ値と、記事の国(例:「us」、「uk」、「fr」など)を設定しました。ブログのホーム画面のどこかに、特定の国と特定のタグを持つすべての投稿のリストを表示するリンクを追加しようとしています。例えば、「UK」の投稿で「APPLE」というタグが付いたものすべてです。
    どうすればいいのか分かりません。誰か助けてもらえませんか?

  3. "post_type" パラメータをクエリに含めないと、結果を生成できませんでした。

    例: $the_query = new WP_Query(‘post_type=page&meta_key=color’);

  4. こんにちは、

    特定のカスタムフィールドを「持たない」投稿を表示するにはどうすればよいですか?何かアイデアはありますか?

    ありがとうございます!!!

    • PHPから知っているように、それは meta_key!=’your key’ である必要があります

      「!」は「ではない」を意味することを知っておくだけです

Leave A Reply

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