如何在不使用 SQL 的情况下查询 WordPress 数据库(我是如何以自定义格式列出某个分类下的所有文章的) 如何在不使用 SQL 的情况下查询 WordPress 数据库(我是如何以自定义格式列出某个分类下的所有文章的)

如何在不使用 SQL 的情况下查询 WordPress 数据库(我是如何以自定义格式列出某个分类下的所有文章的)

WordPress 标志最近我想获取一份我们在网站上发布的所有教程的列表。

虽然我可以在 WordPress 后台管理界面完成这项操作,但我想要的是可以直接复制粘贴到页面中的内容。如果通过后台管理面板操作,就需要逐个复制粘贴标题和链接,这会非常耗时费力。

我最初的想法是用 SQL 写个脚本,查询数据库,然后返回一个带有链接的文章标题列表。但几分钟的研究之后,我发现这是个错误的方法。你真的不需要编写 SQL 来查询 WordPress 数据库。使用 WordPress 的代码要简单得多。

事实上,这非常简单,我只用了大约 30 分钟就完成了任务。我之前从未写过一行 WordPress 代码,却在这么短的时间内就生成了我想要的报告。

我们一起来看看!

在 WordPress 目录的根目录下创建一个类似这样的 .php 文件:

 <html>
<body>
<?php

require __DIR__ . '/wp-blog-header.php';

$the_query = new WP_Query( array( 
  'category_name' => '教程',
  'nopaging' => true
));

echo '找到的帖子' . $the_query->found_posts . '<br />';

如果 ($the_query->have_posts()) {
  echo "<ul>\n";
  while ( $the_query->have_posts() ) {
    $the_query->the_post();
    echo '<li><a href="' . get_permalink() . '">' . esc_html( get_the_title() ) . "</li>\n";
  }
  echo "</ul>\n";
} 别的 {
  esc_html_e('抱歉,没有帖子符合您的条件。');
}
?>
</body>
</html>

我们来逐一分析。这行代码加载了 WordPress 库:

 require __DIR__ . '/wp-blog-header.php';

完成上述步骤后,我们就可以使用 WP_Query 函数创建查询语句了。WordPress Codex文档中有详细的说明。在本例中,我们按 category_name(“tutorials”)进行查询,并启用“nopaging”选项。如果不启用“nopaging”,则只会显示第一组结果。启用“nopaging”后,则会显示该组结果中的所有结果。

 echo '找到的帖子' . $the_query->found_posts . '<br />';

此报告显示找到的结果数量。

现在我们开始编写循环代码,这是 WordPress 术语,指的是一个大型的“遍历找到的每一篇文章”循环。我们用一个测试将其包裹起来,以确保我们有一些文章,然后是核心部分:

 while ( $the_query->have_posts() ) {
  $the_query->the_post();
  echo '<li><a href="' . get_permalink() . '">' . esc_html( get_the_title() ) . "</li>\n";
}

这段代码的意思是“对于查询返回的每个帖子(即“while”循环),将该帖子作为对象获取并使用它”。`the_post()` 函数从查询中获取下一个帖子并将其放入当前上下文中,因此 `get_permalink()` 和 `get_the_ttitle()` 函数会返回所需的结果。

就这么简单!