Rumah >pembangunan bahagian belakang >tutorial php >Parameter WP_Query: pengarang, carian, kata laluan dan kebenaran

Parameter WP_Query: pengarang, carian, kata laluan dan kebenaran

王林
王林asal
2023-09-03 08:41:111102semak imbas

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 参数的最后一个教程中,我将介绍一些不常用的参数,这些参数可以为您的查询提供更大的灵活性。

我们将在此处介绍的参数用于:

  • 作者
  • 搜索
  • 密码
  • 权限
  • caching
  • 返回字段

在开始之前,让我们快速回顾一下如何使用 WP_Query 编写参数。

回顾 WP_Query 中的参数如何工作

当您在主题或插件中编写 WP_Query 时,您需要包含四个主要元素:

  • 查询的参数,使用本教程将介绍的参数
  • 查询本身
  • 循环
  • 结束:关闭 if 和 while 标签并重置发布数据

实际上,这将类似于以下内容:

<?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):使用作者 ID
  • author_name (字符串):使用“user_nicename”(不是名称)
  • author__in (数组):使用作者 ID
  • author__not_in (数组)

第一个 author 允许您通过提供作者 ID 来查询一个或多个作者的帖子:

$args = array(
    'author' => '2'
);

上面的代码查询ID为2的作者的所有帖子。

您还可以使用字符串来查询多个作者的帖子:

$args = array(
    'author' => '1, 2'
);

如果要按名称查询,可以使用 author_name 参数:

$args = array(
    'author_name' => 'rachelmccollin'
);

此参数采用数据库中 user_nicename 字段的值作为其参数,该值在用户管理屏幕中显示为昵称:

Parameter WP_Query: pengarang, carian, kata laluan dan kebenaran

请注意,由于用户可以编辑此内容,因此使用 author 会更安全参数(如果您认为您的用户可能会更改它)。

您还可以查询一系列作者的帖子:

$args = array(
    'author__in' => array(
        '1',
        '2'
    )
);

上面将查询两位作者的帖子: ID 为 12 的作者,给出的结果与我在 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'

Dalam tutorial terakhir ini tentang parameter 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: 🎜
  • Pengarang
  • Cari
  • Kata Laluan
  • Kebenaran
  • caching
  • Kembali medan
🎜Sebelum kita bermula, mari kita semak cara menulis parameter menggunakan WP_Query. 🎜

Semak cara parameter dalam WP_Query berfungsi

🎜Apabila anda menulis WP_Query dalam tema atau pemalam anda, anda perlu memasukkan empat elemen utama: 🎜
  • Parameter pertanyaan, gunakan parameter yang akan diperkenalkan dalam tutorial ini
  • Pertanyaan itu sendiri
  • Gelung
  • Tamat: tutup teg jika dan semasa dan tetapkan semula data penerbitan
🎜Dalam amalan, ini akan kelihatan seperti berikut: 🎜
$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. 🎜

Tulis parameter anda

🎜Parameter dalam tatasusunan mempunyai kaedah pengekodan khusus, seperti berikut: 🎜
$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. 🎜

Parameter pengarang

🎜Terdapat empat parameter yang boleh digunakan untuk membuat pertanyaan oleh pengarang: 🎜
  • pengarang (int): Gunakan ID pengarang
  • author_name (String): Gunakan "user_nicename" (bukan nama)
  • author__in (Array): Gunakan ID pengarang
  • author__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: 🎜 🎜Tajuk yang ditulis semula ialah: Parameter WP_Query: pengarang, carian, kata laluan dan kebenaran 🎜🎜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

Parameter carian

🎜Hanya terdapat satu parameter carian, iaitu 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. 🎜

Parameter kata laluan

🎜Anda boleh menggunakan dua parameter kata laluan untuk menanyakan siaran dengan atau tanpa perlindungan kata laluan: 🎜
  • has_password (bool)
  • post_password (String)
🎜Parameter pertama 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

Parameter kebenaran

🎜Kebenaran hanya mempunyai satu parameter, 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn