是否可以创建自定义发布插件?

时间:2013-05-09 作者:Django Reinhardt

我知道Wordpress允许您使用自定义字段创建自定义帖子类型,但是否可以创建一个自定义插件来创建和维护自己的自定义帖子类型(在Wordpress的自定义帖子之外)?

例如,如果你有一个Wordpress网站,它有一个自定义的帖子类型“Event”,以及诸如“Event Host”、“Location”、“Start Date”、“End Date”、“Entry Fee”等自定义字段。

其想法是,自定义插件将允许更精细的控件查看和排序数据库中选定的记录。因此,例如,用户可以要求仅查看特定事件主机的事件,或者在特定阈值之间收取进入费。

此外,如果结束日期已过(即事件已完成),则所有搜索结果将不再显示该事件。

我知道,使用Wordpress的自定义帖子类型和自定义字段可以实现大部分功能,但我相信很多功能都很灵活、有限且缓慢。能够编写数据库模式和SQL语句可能会给我们带来更多的能力。

Wordpress是否允许通过插件进行此类级别的定制?

1 个回复
SO网友:fuxia

可以使用自定义的帖子类型,并且只能使用WordPress添加到该API中的一些功能。事实上,这是默认设置:当您调用register_post_type(), 的默认值publicFALSE. 没有UI、没有查询变量、没有重写规则、列表或公共可见性。你可以走了public => FALSE, 仅启用所需的功能,其余部分使用自定义处理程序。

看看插件Log Deprecated Notices 例如(忽略PHP 4代码样式)。

    $args = array(
        \'labels\' => $labels,
        \'show_in_menu\' => \'tools.php\',
        \'show_ui\' => true,
        \'public\' => false,
        \'capabilities\' => array(
            \'edit_post\'          => \'activate_plugins\',
            \'edit_posts\'         => \'activate_plugins\',
            \'edit_others_posts\'  => \'activate_plugins\',
            \'publish_posts\'      => \'do_not_allow\',
            \'read_post\'          => \'activate_plugins\',
            \'read_private_posts\' => \'do_not_allow\',
            \'delete_post\'        => \'activate_plugins\',
        ),
        \'rewrite\'      => false,
        \'query_var\'    => false,
    );
    register_post_type( self::pt, $args );
但是……如果您的帖子类型是公开的,并且您阻止其他插件访问其内容,您的用户可能会遇到一些奇怪的问题:

用于内部搜索的插件(如Relevansi或search Everything)可能无法按预期工作,因为相关性权重可能表现得很奇怪站点地图。xml生成器可能找不到内容

  • 内置的角色和功能可能并不总是有效
  • 您需要进行大量附加测试以确保兼容性。因此,最重要的一点不是这是否可能,而是结果是否符合用户对插件的心理模型。单靠文档和良好的UI无法解决这一问题。

    我的建议是:试着铺路。例如,使用过滤器和挂钩在最后可能的时刻更改内容pre_get_posts 搜索结果。

    结束

    相关推荐

    Can't match title in database

    这很令人困惑,希望有人能帮助我。下面是我用来查看wp\\u posts表中是否存在标题的一些代码$mypostids = $wpdb->get_results(\"select ID from $wpdb->posts where post_title=\'$thisTitle\'\"); if(!empty($mypostids)){ echo $thisTitle.\' already exists\'; }else{ echo $t