ホームページ >バックエンド開発 >PHPチュートリアル >WP_Query パラメータ: 作成者、検索、パスワード、権限

WP_Query パラメータ: 作成者、検索、パスワード、権限

王林
王林オリジナル
2023-09-03 08:41:111106ブラウズ

このシリーズではこれまで、WP_Query クラスで使用して、投稿タイプ、カテゴリ、タグ、メタデータ、日付、ステータスなどによって投稿を選択できるパラメーター選択について学習しました。

#WP_Query パラメータに関するこの最後のチュートリアルでは、クエリの柔軟性を高めるため、あまり使用されないパラメータについて説明します。

ここで紹介するパラメータは次の目的で使用されます。

###著者### ###検索### ###パスワード###
    権限
  • ###キャッシング###
  • 戻りフィールド
  • 始める前に、
  • WP_Query
  • を使用してパラメータを記述する方法を簡単に確認しましょう。
  • WP_Query のパラメーターがどのように機能するかを確認する
テーマまたはプラグインで

WP_Query を記述する場合は、次の 4 つの主要な要素を含める必要があります。

クエリ パラメーター。このチュートリアルで紹介するパラメーターを使用します。

クエリ自体 ###サイクル###

終了: if タグと while タグを閉じて、公開データをリセットします

実際には、これは次のようになります:

リーリー
    これらのパラメータは、データベースからどのデータを取得するかを WordPress に指示します。これについては、ここで説明します。ここで注目するのは、コードの最初の部分です:
  • リーリー
  • ご覧のとおり、パラメータは配列に含まれています。このチュートリアルに従うにつれて、それらをコーディングする方法を学びます。
  • パラメータを記述します
  • 配列内のパラメータには、次のような特定のエンコード方法があります:
リーリー

パラメータとその値は一重引用符で囲み、それらの間に

=>

を使用し、カンマで区切る必要があります。この間違いを犯すと、WordPress がクエリにすべてのパラメーターを追加しない可能性があり、追加しないと白い画面が表示されることがあります。

作成者のパラメータ

作成者によるクエリに使用できるパラメータは 4 つあります:

author

(

int): 著者 ID を使用します

author_name

(

String

): 「user_nicename」(名前ではありません)を使用してください
  • author__in (array): 著者 ID を使用します
  • author__not_in (array)
  • 最初の author では、著者 ID: を指定して、1 人以上の著者による投稿をクエリできます。 リーリー
  • 上記のコードは、ID
  • 2 を持つ作成者のすべての投稿をクエリします。 文字列を使用して複数の作成者による投稿をクエリすることもできます: リーリー
  • 名前でクエリを実行する場合は、
author_name

パラメータを使用できます: リーリー このパラメータは、データベースの

user_nicename

フィールドの値をパラメータとして受け取ります。この値は、ユーザー管理画面にニックネームとして表示されます:

ユーザーはこれを編集できるため、ユーザーが変更する可能性があると思われる場合は、

author パラメーターを使用する方が安全であることに注意してください。

著者の一連の投稿をクエリすることもできます:

リーリー 上記は 2 人の著者の投稿をクエリします。著者の ID は 1

2WP_Query パラメータ: 作成者、検索、パスワード、権限 で、得られる結果は

author## での私の結果と同じです。 # パラメータ。

最後に、author__not_in

パラメーターを使用して、1 人以上の投稿者からの投稿を除外できます。次のパラメータは、作成者

1

を除くすべての投稿をクエリします:

リーリー または、複数の著者を除外することもできます: リーリー または、author パラメータを使用し、著者 ID の前にマイナス記号を使用して著者を除外することもできます。 リーリー 検索パラメータ

検索パラメータは s という 1 つだけです。これを使用して、検索用語に一致する投稿をクエリします。たとえば、キーワード「私の好きな食べ物」を含む投稿をクエリするには、次のように使用します: リーリー たとえば、これは、類似したキーワードを含む関連投稿を検索する場合に便利です。

パスワードパラメータ

2 つのパスワード パラメータを使用して、パスワード保護の有無にかかわらず投稿をクエリできます。

has_password

(

bool

)

post_password

(

String

)

最初のパラメータ
    has_password
  • を使用すると、パスワード保護の有無にかかわらず投稿をクエリできます。したがって、パスワードで保護された投稿をクエリするには: リーリー パスワードなしの投稿の場合: リーリー
  • post_password
  • パラメータを使用して、パスワード自体でクエリを実行することもできます: リーリー 権限パラメータ Permission には、パラメータ
  • perm
が 1 つだけあり、現在のユーザーが読み取り権限を持つ投稿をクエリするために使用されます。これは

'readable' 値をとり、他のパラメーターと組み合わせて使用​​することを目的としています。

因此,要查询受密码保护的帖子并仅在用户具有适当权限时才显示它们,您可以使用以下命令:

$args = array(
    'has_password' => true,
    'perm' => 'readable'
);

或者,如果当前用户有权查看草稿帖子,则可以使用以下命令:

$args = array(
    'post_status' => 'draft',
    'perm' => 'readable'
);

缓存参数

共有三个缓存参数,它们会阻止查询检索到的数据添加到缓存中:

  • cache_results (boolean):帖子信息缓存
  • update_post_meta_cache (boolean):发布元信息缓存
  • update_post_term_cache (boolean):帖子术语信息缓存

这三个选项的默认值都是 true:如果您希望将数据添加到缓存中,则不需要使用它们。

因此,要显示 product 帖子类型的所有帖子,但不将帖子信息添加到缓存中,您可以使用以下命令:

$args = array(
    'post_type' => 'product',
    'cache_results' => false
);

通常您不应该使用这些参数,因为将发布数据添加到缓存是一个很好的做法。但是,您有时可能希望检索帖子,以便只使用一些帖子数据,在这种情况下,您不需要缓存中的其余帖子数据。例如,当您只想输出带有链接的帖子标题列表时,在这种情况下,您不需要将帖子术语数据或元数据添加到缓存中:

$args = array(
    'post_type' => 'product',
    'update_post_meta_cache' => false,
    'update_post_term_cache' => false
);

返回字段参数

您可以使用 fields 参数来指定从查询中返回哪些字段。这可以节省从数据库中的字段返回的数据,而在循环中输出数据时不需要这些数据。

默认情况下是返回所有字段,但是您有两个选项可以使用 fields 参数来限制这一点。首先,'ids' 参数:

$args = array(
    'fields' => 'ids'
);

这只会返回帖子 ID 数组,不会返回其他字段。如果您想在循环中输出任何内容(例如帖子标题),则必须使用 get_the_title ($post->ID); 等函数来输出标题,这将处理事情的方式很冗长。

您可以使用的另一个参数获取帖子 ID 与子帖子 ID 的关联数组:

$args = array(
    'fields' => 'id=>parent'
);

您可以使用它根据您的其他参数及其子参数查询帖子。

摘要

WP_Query 系列的这一部分介绍了 WP_Query 类的最终参数集。您可以使用它们按作者、密码保护状态或密码本身和搜索词查询帖子,并设置是否将查询结果添加到缓存以及查询返回哪些字段。

在本系列的下一部分中,您将看到一些在主题或插件中使用 WP_Query 的有效示例。

以上がWP_Query パラメータ: 作成者、検索、パスワード、権限の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。