Products
GG网络技术分享 2025-03-18 16:08 0
这 WP_Query
类非常强大。 它允许您创建自己的自定义查询,以便在您的 WordPress 网站的任何位置运行——在主要内容、侧边栏中或您喜欢的任何其他位置。
这是我经常使用的东西,无论是在自定义模板文件中还是在侧边栏或页脚等内容之外的区域中。 而且我已经记不清我用多少次编写自定义查询了 WP_Query
.
但是有可能避免所有的返工。 如果您使查询参数可过滤,则可以编写一个函数来修改参数并在站点的不同位置运行不同的查询。 这意味着您可以编写一个带有一些默认参数(或者实际上根本没有参数)的插件,然后在您的主题(或另一个插件)中编写一个修改这些参数的函数。
这不会改变使用您的查询参数运行的循环(尽管如果您愿意,您也可以为此创建另一个过滤器),但这确实意味着您可以编写您的 WP_Query
实例一次,然后在需要时对其进行调整。
在这篇文章中,我将向您展示如何编写一个带有可过滤实例的插件 WP_Query
然后在主题的函数文件中编写一个函数来编辑参数。
继续阅读,或使用以下链接跳转:
要继续阅读这篇文章,您需要访问以下内容:
您还需要了解如何编写插件、如何编辑函数文件以及如何 WP_Query
作品。
准备好? 那么让我们开始吧!
首先创建你的插件。 在您的插件中为您的插件创建一个新文件夹 wp-内容/插件 文件夹,然后在其中创建一个空白文件。 我总是创建一个文件夹,以防以后想在我的插件中添加任何样式、脚本或包含文件。
这是我的插件的开头行:
现在让我们添加 WP_Query
功能。 我将首先添加 $args
变量,但保持为空:
然后我们添加循环:
这是完整的功能:
我们现在有一个相当标准的查询和循环。 这将根据参数(当前为空)运行查询,然后输出一个标题,后跟一个获取的项目列表以及指向它们的链接。 它可用于输出使用类别、分类法、帖子类型或其他任何内容作为参数的帖子列表。
但现在,它不会输出任何东西,因为这些参数是空的。 让我们添加一些参数,但将它们包装在一个过滤器中。
采取 $args
部分代码并对其进行编辑以添加一些参数。
我只是要为 posts_per_page
, 限制帖子输出的数量。 我不会添加任何其他参数:这样会输出最近的五个帖子。 如果您愿意,可以添加一些不同的参数。
到目前为止,如此简单。 现在让我们将这些参数包含在一个过滤器中。 这是代码:
这将我们的单个参数包装在一个名为 wpmu_filterable_query
,然后您可以从另一个插件或您的主题中挂钩,以修改这些参数。
当我们这样做时,让我们在循环内的该标题中添加一个过滤器,因为它有点通用。
编辑您的循环,使其包含一个过滤器:
就是这样。 除非您决定在循环中添加更多过滤器,否则您的插件已准备就绪。
下一步是在您的主题中编写几个函数。
第一个将调用 wpmu_filterable_query
动作钩子并将其输出到您的页面中。 您可以通过多种方式之一调用它。
第一种是将它附加到主题中的动作钩子上,方法是使用 add_action
功能。 所以如果你的主题有一个叫做 my_theme_sidebar_hook
,您将在边栏中输出查询,如下所示:
二是直接编码成主题模板文件。 我更喜欢尽可能使用钩子,因为它们给了我更多的灵活性,但如果你的主题没有任何钩子,这可能是最好的方法。 如果您正在使用第三方主题,请不要直接编辑主题文件 - 而是在子主题中创建它的副本。
然后在您的主题模板文件中,添加对 wpmu_filterable_query
功能:
这只是在您放置它的模板文件中的位置运行该函数。
第三个选项是创建一个新的模板文件,例如页面模板文件,它将运行此查询而不是默认查询。 在这种情况下,您将复制 页面.php 从您的主题或您的父主题,并用函数调用替换标准循环,如上。
这就是您将功能添加到主题的方式。 但是如何过滤这些论点呢?
最后一步是在主题的函数文件中编写一个函数来过滤查询参数。 您还可以添加第二个函数来过滤标题,以及使用您可能选择添加到插件循环中的任何其他过滤器的任何函数。
请注意,如果需要,您可以使用插件来执行此操作,但是由于您已经将函数编码到主题中,我认为将此代码添加到函数文件中会更整洁。
假设您注册了一个名为的帖子类型 玩偶,而您想输出它。 但不是输出六个帖子,而是显示四个。
在您的函数文件中,您需要以下代码:
这会将原始过滤器的内容替换为函数中的新内容。 请注意,如果您想保留原始过滤器中的任何参数,则必须将它们添加到此函数中,因为新代码会覆盖旧代码,并且不会添加到它。
接下来让我们添加一个函数来编辑标题文本:
这将输出新函数的内容而不是 <h3>Heading</h3>
,它在过滤器内部。
您可以根据需要修改这两个功能。
如果您要使用 WP_Query
在很多网站上上课,想省去编码的麻烦 WP_Query
每次都完整,这可以为您节省一些工作。 在您使用的每个站点中 WP_Query
,您只需要添加对函数的调用,以及附加到过滤器挂钩的函数。
如果你想让你的插件更加灵活,你可以在循环中使用一个包含文件,而不是直接将它编码到插件中,然后将 include_once()
调用过滤器。 这样,您可以根据需要调用不同的包含文件,并输出不同版本的循环。
Demand feedback