大约两年前在 Wordpress Answer 网站上进行了一次精彩的对话,其中许多人提出了很好的解决方案,可以为您的自定义帖子类型添加分类过滤器到管理屏幕(请参阅我所指的屏幕的 URL) :
http://[yoursite.com]/wp-admin/edit.php?s&post_status=all&post_type=[post-type]
无论如何,我喜欢 Michael 的出色贡献,但最终还是使用了 Somatic 的实现以及 Manny 的层次结构选项。我把它放在一个班级里——因为这就是我喜欢做的事情——而且它几乎可以工作。下拉列表出现,但下拉列表中的值都在 $_GET 属性中查找您正在过滤的分类 slug-name。出于某种原因,我什么也得不到。我查看了下拉列表的 HTML,对我来说似乎没问题。这是一些上下文的快速屏幕截图:
您可以从中看出我的帖子类型称为“锻炼”,而我试图用作过滤器的分类法是“动作”。下面是下拉列表周围的 HTML:
<select name="actions" id="actions" class="postform">
<option value="">Show all Actions</option>
<option value="ate-dinner">Ate dinner(1)</option>
<option value="went-running">Went running(1)</option>
</select>
我还确认所有表单元素都在 DOM 的一部分内。然而,如果我选择“开始运行”并单击过滤器按钮,URL 查询字符串会返回,而不会引用我选择的内容。
更明确地说,页面首先使用以下 URL 加载:
/wp-admin/edit.php?post_type=exercise
在从动作过滤器中选择“开始运行”作为选项的同时按下过滤器按钮后:
/wp-admin/edit.php?s&post_status=all&post_type=exercise&action=-1&m=0&actions&paged=1&mode=list&action2=-1
实际上,您可以看到对“操作”变量的引用,但它被设置为空,正如我现在详细查看的那样,当我在页面上点击“过滤器”时,它会将过滤器下拉重置为默认的“显示全部”行动”。谁能帮我这个?
顺便说一句,我在这里附上了 PHP 代码(尽管我现在开始倾向于它是一个 js 问题):gist。