首页 > 解决方案 > Wordpress 如何过滤 URL 中的多个自定义 post_type

问题描述

在我的 WordPressv5.6中,我在 Author 页面中使用以下代码来显示来自自定义songpost_type的所有当前作者的帖子。

<?php
$author_page_link = esc_url(get_author_posts_url(false, ID->user_nicename));
?>
<a href="' . $author_page_link . '?post_type=song">All Songs</a>

上面的链接将过滤当前作者的所有歌曲,其 URL 如下:

http://www.music.com/author/current_author/?post_type=song

我想在过滤器页面中显示作者的“歌曲”和“诗歌”自定义帖子。

我试过下面的链接,没有运气:

<a href="' . $author_page_link . '?post_type=song+poem">All</a>
<a href="' . $author_page_link . '?post_type=song&post_type=poem">All</a>

我怎样才能有一个链接来过滤来自单个作者的多个自定义帖子的帖子?

更新 1

我使用的是archive-song.php模板,这就是为什么song页面中只显示自定义帖子的原因。

将以下 URL 与 一起使用时?post_type=song+poemarchive.php仅在模板层次结构中,URL 重定向到author.php.

http://www.music.com/author/current_author/?post_type=song+poem

如果我将以下 URL 与 一起使用?post_type=song&post_type=poemarchive.php仅在模板层次结构中,则仅post_type过滤最后的结果(可以是诗歌或歌曲,以最后一个查询为准)。

http://www.music.com/author/current_author/?post_type=song&post_type=poem

更新 2

这是我的作者页面 ( https://pastebin.com/kCrYebcD )。此页面仅显示所有帖子类型的当前作者的最新 10 篇帖子

这是我的存档页面 ( https://pastebin.com/twkWn5Bc )。在这里,我想显示来自所有帖子类型的作者的所有帖子

标签: phpwordpressurlwordpress-themingcustom-wordpress-pages

解决方案


要通过 URL 参数包含多个帖子类型,您需要将其声明为数组。

您的网址应如下所示:

echo '<a href="' . $author_page_link . '?post_type[]=song&post_type[]=poem">All</a>';

这应该适合你。


推荐阅读