0

我的客户有一个网站,列出了不同的航行服务。这些服务有不同的订阅级别:

  • 自由的
  • 优质的
  • 满的

在后端,我使用高级自定义字段设置了一些自定义字段(它们可以像普通的 WP 自定义字段一样完美地工作)。该服务的自定义字段称为“subscription_level”,它是一个包含上述选项的下拉列表。

我想要实现的是按订阅级别和字母顺序显示帖子。因此,首先,您将拥有按标题排序的所有“完整”服务,然后是“高级”服务,然后是“免费”服务。

喜欢:

- - 满的 - -

全方位服务

全方位服务 B

全方位服务 C

- - 优质的 - -

优质服务A

优质服务B

优质服务 C

- - 自由的 - -

免费服务A

免费服务B

免费服务C

理想情况下,这也应该有分页,但如果这不可能,那也不是世界末日。

我通过查看 Codex 说明尝试了几个自定义选择查询,但没有运气。我的问题是我需要两种“orderby”方式?一个根据我的自定义字段“subscription_level”的元值划分帖子,同时按标题对每个级别的订阅进行排序......我似乎无法找到实现这一目标的方法。

任何指向我正确方向的想法都会很棒!

提前致谢

4

1 回答 1

0

希望我理解这个问题:

  • 您有一个 post_type “服务”(或者这实际上是您的标准帖子)
  • 这些服务中的每一个都具有存储在自定义字段中的订阅级别,例如“免费”、“高级”或“完整”

因此,首先要做的是将帖子分类到这些级别。

之后在这些级别内,帖子应根据其标题(或其他)进行排序。

我不确定使用一个自定义 SQL 查询是否容易实现这一点。它假设它会是这样的:

SELECT * FROM wp_posts,wp_postmeta.meta_value INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_posts.post_status='publish' AND wp_postmeta.meta_key = "service" ORDER BY wp_postmeta.meta_value, wp_posts.post_title, ASC

但是,如果这变得复杂,您可以选择另一种方式来实现这一目标。收集所有“Full service”帖子的ID,所有“Premium service”帖子的ID和所有“Free service”帖子的ID,fe

SELECT wp_posts.post_ID FROM wp_posts INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id WHERE wp_postmeta.meta_key = "service" and wp_postmeta.meta_value="premium"

(对每种服务都这样做)

之后,您使用“posts_in”数组或另一个自定义 SQL 查询运行 WP_QUERY,您可以在其中按标题或新值对收集的帖子进行排序。

根据您要使用的分页类型,有一篇博客文章介绍了如何自己以简单的方式集成自定义分页:

http://www.blackbam.at/blackbams-blog/2011/07/18/implementing-a-simple-and-flexible-paging-algorithm-using-php/

希望这可以帮助。

于 2011-08-31T12:14:19.340 回答