Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在wordpress中使用带有自定义SQL的WP_查询_Php_Wordpress - Fatal编程技术网

Php 在wordpress中使用带有自定义SQL的WP_查询

Php 在wordpress中使用带有自定义SQL的WP_查询,php,wordpress,Php,Wordpress,我正在为wordpress编写一个插件,我想创建自己的搜索。我曾试图改变wordpress搜索,但我所做的是非常具体的SQL查询。我正在比较横向坐标和纵向坐标,并以此为基础得到帖子 我可以使用标准的wpdb查询来显示文章,但是我没有其他功能,比如分页。我希望能够将我的SQL语句与WP_查询函数一起使用。如果我的想法正确,那么我应该能够使用来自$posts全局变量的分页和其他特性 是这样吗??我在谷歌上搜索了几个小时,但除了使用args选择类别等功能外,找不到任何插件。我只需要发送一个完整的SQL

我正在为wordpress编写一个插件,我想创建自己的搜索。我曾试图改变wordpress搜索,但我所做的是非常具体的SQL查询。我正在比较横向坐标和纵向坐标,并以此为基础得到帖子

我可以使用标准的wpdb查询来显示文章,但是我没有其他功能,比如分页。我希望能够将我的SQL语句与WP_查询函数一起使用。如果我的想法正确,那么我应该能够使用来自$posts全局变量的分页和其他特性

是这样吗??我在谷歌上搜索了几个小时,但除了使用args选择类别等功能外,找不到任何插件。我只需要发送一个完整的SQL命令,没有其他功能


非常感谢

您可能不会得到最理想的SQL查询,但是如果您得到一个包含所有要使用的post ID的数组(首先使用您自己的SQL),然后使用
WP\u Query
以及
post\u in
posts\u per\u page
,WordPress将为您处理一切(包括SQL限制、分页等).

有一个名为
posts\u where\u paged
的过滤器,它将为您提供正在生成的SQL查询的where部分。使用您额外需要的SQL比较来修改它。这样您就不会更改WordPress加载页面的方式,只需更改它从数据库检索的数据即可

如果您正在提取的数据不在搜索过程中查询的正常表集中,那么您还必须使用
posts\u join\u paged
过滤器来更改正在查看的表。(至少我认为是这个;)


查看wp includes/query.php的第2376行,查看可用于修改db查询的过滤器。

为了便于任何人查找,从WordPress 3.1开始,您现在可以使用过滤器直接更改$wp\u query使用的SQL

谢谢你的回复。。。这听起来确实可行!我唯一的问题(我想)是我在加载页面后进行数据库调用。我使用一个短代码加载插件函数,然后执行查询。我想如果我将SQL查询更改为一个可以工作的头函数,您是在单个页面中使用短代码,还是在循环中使用post?短代码将在循环中。我创建了一个新页面,在内容的主体中,我将。然后,该示例调用my函数,该函数将查询自定义SQL,在这种情况下,您必须生成自己的分页(请参见
paginate_links()
),并使用
paged
变量将当前页面(最有可能来自
$\u GET
变量)馈送到WP_查询中。我发现我可以改变使用WP_查询和使用query_posts($args)…我使用的args正如您所建议的,是我第一次查询的帖子ID。这意味着该页面可以使用“开箱即用”的分页链接。谢谢:)您知道我是否有办法维护帖子ID的结构吗?因此,如果我有一个ID数组(3,6,9)——当我在post_u_uin中使用它时——它能按顺序返回post吗?