Wordpress无插件实现新建文章时预先自动选择分类

需求

在 CMS 系统里,会有这样一类需求:点击按钮创建一篇XX分类的文章,比如「新建歌曲」、「新增产品」、「新增日记」、「新增分类1下的文章」等(假设歌曲、产品、日记、分类1是你的 CMS 系统里已经存在的分类或类型)。


如图:需求是打开编辑文章的界面后,分类1要自动勾选。

这个简单的需求,在目前版本的 Wordpress(4.2.2) 里并不能简单地实现。但可以通过 Hook 配合 jQuery 实现,不需要插件。

原理

可以将这个需求分解为两步:

  1. 按钮指向一个链接,此链接中包含分类参数(如分类的tag_ID,我们在示例中设为 catid)
  2. 后台加载新建文章页面后,获取 URL 中的 catid 参数,通过 JS 模拟点击以选择此分类

将以下代码加入到 Wordpress 主题的 function.php 中,这样,则可以通过形如

http://icewent.com/wp-admin/post-new.php?post_type=post&cate=72

的链接在编号为 72 的分类下创建一篇文章。

代码

function ws_preselect_post_category() {
    if ( isset($_GET['catid']) && is_numeric($_GET['catid']) ) {
        $catId = intval($_GET['catid']);
        ?>
        <script type="text/javascript">
            jQuery(function() {
                var catId = <?php echo json_encode($catId); ?>;
                jQuery('#in-category-' + catId).click();
            });
        </script>
        <?php
    }
}
add_action('admin_footer-post-new.php', 'ws_preselect_post_category');

参考资料

W-Shadow.com: How to Pre-Select a Category for a New Post

阅读 342