Rumah >pembangunan bahagian belakang >tutorial php >Parameter WP_Query: pengarang, carian, kata laluan dan kebenaran
Setakat ini dalam siri ini, anda telah mempelajari tentang pemilihan parameter yang boleh anda gunakan dengan kelas WP_Query
untuk mencari mengikut jenis pos, kategori, teg, metadata, tarikh, Status dsb. Pilih siaran untuk maklumat lanjut. WP_Query
类一起使用的参数选择,以按帖子类型、类别、标签、元数据、日期、状态等选择帖子更多。
在关于 WP_Query
参数的最后一个教程中,我将介绍一些不常用的参数,这些参数可以为您的查询提供更大的灵活性。
我们将在此处介绍的参数用于:
在开始之前,让我们快速回顾一下如何使用 WP_Query
编写参数。
当您在主题或插件中编写 WP_Query
时,您需要包含四个主要元素:
实际上,这将类似于以下内容:
<?php $args = array( // Arguments for your query. ); // Custom query. $query = new WP_Query( $args ); // Check that we have query results. if ( $query->have_posts() ) { // Start looping over the query results. while ( $query->have_posts() ) { $query->the_post(); // Contents of the queried post results go here. } } // Restore original post data. wp_reset_postdata(); ?>
这些参数告诉 WordPress 从数据库中获取哪些数据,我将在此处介绍这些数据。所以我们在这里关注的是代码的第一部分:
$args = array( // Arguments for your query. );
如您所见,参数包含在一个数组中。在学习本教程时,您将学习如何对它们进行编码。
数组中的参数有一种具体的编码方式,如下:
$args = array( 'parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value' );
必须将参数及其值括在单引号中,在它们之间使用 =>
,并用逗号分隔它们。如果您犯了这个错误,WordPress 可能不会将所有参数添加到查询中,否则您可能会看到白屏。
有四个参数可以用于按作者查询:
author
(int):使用作者 IDauthor_name
(字符串):使用“user_nicename”(不是名称)author__in
(数组):使用作者 IDauthor__not_in
(数组)第一个 author
允许您通过提供作者 ID 来查询一个或多个作者的帖子:
$args = array( 'author' => '2' );
上面的代码查询ID为2
的作者的所有帖子。
您还可以使用字符串来查询多个作者的帖子:
$args = array( 'author' => '1, 2' );
如果要按名称查询,可以使用 author_name
参数:
$args = array( 'author_name' => 'rachelmccollin' );
此参数采用数据库中 user_nicename
字段的值作为其参数,该值在用户管理屏幕中显示为昵称:
请注意,由于用户可以编辑此内容,因此使用 author
会更安全参数(如果您认为您的用户可能会更改它)。
您还可以查询一系列作者的帖子:
$args = array( 'author__in' => array( '1', '2' ) );
上面将查询两位作者的帖子: ID 为 1
和 2
的作者,给出的结果与我在 author
参数上面。
最后,您可以使用 author__not_in
参数排除一位或多位作者的帖子。下面的参数查询除作者 1
之外的所有帖子:
$args = array( 'author__not_in' => array( '1' ) );
或者您可以排除多个作者:
$args = array( 'author__not_in' => array( '1', '2' ) );
或者,您可以使用 author
参数,并在作者 ID 前面使用减号来排除作者:
$args = array( 'author' => '-2' );
搜索的参数只有一个,就是s
。使用它来查询与搜索词匹配的帖子。例如,要查询包含关键字“我最喜欢的食物”的帖子,您可以使用:
$args = array( 's' => 'my favorite food' );
例如,您可能会发现这对于搜索具有相似关键字的相关帖子很有用。
您可以使用两个密码参数来查询有或没有密码保护的帖子:
has_password
(bool)post_password
(字符串)第一个参数 has_password
允许您查询有或没有密码保护的帖子。因此,要查询受密码保护的帖子:
$args = array( 'has_password' => true );
对于没有密码的帖子:
$args = array( 'has_password' => false );
您还可以通过密码本身进行查询,使用 post_password
参数:
$args = array( 'post_password' => 'mypassword' );
权限只有一个参数,perm
,用于查询当前用户有权限阅读的帖子。它采用 'readable'
WP_Query
, saya akan membincangkan beberapa parameter yang kurang biasa digunakan yang boleh memberikan lebih fleksibiliti dalam pertanyaan anda. 🎜
🎜Parameter yang kami perkenalkan di sini digunakan untuk: 🎜
WP_Query
. 🎜
WP_Query
dalam tema atau pemalam anda, anda perlu memasukkan empat elemen utama: 🎜
$args = array( 'has_password' => true, 'perm' => 'readable' );🎜Parameter ini memberitahu WordPress data apa yang perlu diperoleh daripada pangkalan data, yang akan saya bincangkan di sini. Jadi perkara yang kami fokuskan di sini ialah bahagian pertama kod: 🎜
$args = array( 'post_status' => 'draft', 'perm' => 'readable' );🎜Seperti yang anda lihat, parameter terkandung dalam tatasusunan. Semasa anda mengikuti tutorial ini, anda akan belajar cara mengekodnya. 🎜
$args = array( 'post_type' => 'product', 'cache_results' => false );🎜Anda mesti menyertakan parameter dan nilainya dalam petikan tunggal, gunakan
=>
di antaranya dan pisahkan dengan koma. Jika anda membuat kesilapan ini, WordPress mungkin tidak menambah semua parameter pada pertanyaan, jika tidak, anda mungkin melihat skrin putih. 🎜
pengarang
(int): Gunakan ID pengarangauthor_name
(String): Gunakan "user_nicename" (bukan nama)author__in
(Array): Gunakan ID pengarangauthor__not_in
(array)pengarang
pertama membolehkan anda menanyakan siaran oleh seorang atau lebih pengarang dengan memberikan ID pengarang mereka: 🎜
$args = array( 'post_type' => 'product', 'update_post_meta_cache' => false, 'update_post_term_cache' => false );🎜Kod di atas menanyakan semua siaran pengarang yang IDnya ialah
2
. 🎜
🎜Anda juga boleh menggunakan rentetan untuk menanyakan siaran oleh berbilang pengarang: 🎜
$args = array( 'fields' => 'ids' );🎜Jika anda ingin bertanya mengikut nama, anda boleh menggunakan parameter
author_name
: 🎜
$args = array( 'fields' => 'id=>parent' );🎜Parameter ini mengambil sebagai parameternya nilai medan
user_nicename
dalam pangkalan data, yang dipaparkan sebagai nama panggilan dalam skrin pengurusan pengguna: 🎜
🎜🎜🎜Sila ambil perhatian bahawa memandangkan pengguna boleh mengedit kandungan ini, adalah lebih selamat untuk menggunakan parameter author
(jika anda fikir pengguna anda mungkin mengubahnya). 🎜
🎜Anda juga boleh menyemak siaran daripada beberapa siri pengarang: 🎜
rrreee
🎜Di atas akan menanyakan siaran dua pengarang: Pengarang dengan ID 1
dan 2
akan memberikan hasil yang sama seperti saya dalam author di atas. 🎜
🎜Akhir sekali, anda boleh mengecualikan siaran daripada seorang atau lebih pengarang menggunakan parameter author__not_in
. Parameter berikut menanyakan semua siaran kecuali pengarang 1
: 🎜
rrreee
🎜Atau anda boleh mengecualikan berbilang pengarang: 🎜
rrreee
🎜Sebagai alternatif, anda boleh menggunakan parameter author
dan menggunakan tanda tolak di hadapan ID pengarang untuk mengecualikan pengarang: 🎜
rrreee
s
. Gunakan ini untuk membuat pertanyaan bagi siaran yang sepadan dengan istilah carian anda. Contohnya, untuk menanyakan siaran yang mengandungi kata kunci "makanan kegemaran saya" anda akan gunakan: 🎜
rrreee
🎜Sebagai contoh, anda mungkin mendapati ini berguna untuk mencari siaran berkaitan dengan kata kunci yang serupa. 🎜
has_password
(bool)post_password
(String)has_password
membolehkan anda menanyakan siaran dengan atau tanpa perlindungan kata laluan. Jadi, untuk menanyakan siaran yang dilindungi kata laluan: 🎜
rrreee
🎜Untuk siaran tanpa kata laluan: 🎜
rrreee
🎜Anda juga boleh membuat pertanyaan dengan kata laluan itu sendiri, menggunakan parameter post_password
: 🎜
rrreee
perm
, yang digunakan untuk menanyakan siaran yang pengguna semasa mempunyai kebenaran untuk membaca. Ia memerlukan nilai 'readable'
dan bertujuan untuk digunakan bersama dengan parameter lain. 🎜
因此,要查询受密码保护的帖子并仅在用户具有适当权限时才显示它们,您可以使用以下命令:
$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
的有效示例。
Atas ialah kandungan terperinci Parameter WP_Query: pengarang, carian, kata laluan dan kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!