如何在插件设置字段中呈现wp_Editor中的内容?

时间:2019-04-23 作者:Warwick

我有一个插件设置,使用wp_editor() 来处理输入,并将作为短代码的一部分进行回显。在管理端,一切都很好,但当我在客户端回显输出时,在短代码中,内容不会以换行符和段落分隔符进行回显,如the_content().

是否有回音的现有方法(或功能)wp_editor() 来自其他来源的内容,例如插件设置?或者我需要手动解析和构建段落和换行符吗(我觉得我在这里重新发明轮子!)?

参考代码示例:

add_action(\'admin_init\', \'my_plugin_settings\');

function my_plugin_settings() {

    add_settings_section(
        \'my_messages_section\',
        \'Messages\',
        \'Messages\',
        \'my_settings\'
    );

    register_setting(\'my_settings\', \'my_failure_message\');

    add_settings_field(
        \'my_failure_message\',
        \'Failure Message\',
        \'my_failure_message_input\',
        \'my_settings\',
        \'my_messages_section\'
    );

}

function my_failure_message_input() {
    wp_editor(get_option(\'my_failure_message\'), \'my_failure_message\');
}

function my_plugin_shortcodes() {
    add_shortcode(\'my_shortcode\', \'my_messages_shortcode\');
}

add_action(\'init\', \'my_plugin_shortcodes\');

function my_messages_shortcode($atts = [], $content = NULL, $tag = \'\') {
    echo get_option(\'my_failure_message\');
}
所需输出:

<p><strong>Failed.</strong></p>
<p>There was an error. Please try again later.</p>
实际输出(折叠成一行):

<strong>Failed.</strong>

There was an error. Please try again later.

1 个回复
SO网友:Qaisar Feroz

the_content filter 可用于在从数据库检索到内容之后以及将其打印到屏幕之前过滤内容
The Core filters 在…上the_content 是:

add_filter( \'the_content\', \'wptexturize\'        );  
add_filter( \'the_content\', \'convert_smilies\'    );
add_filter( \'the_content\', \'convert_chars\'      );
add_filter( \'the_content\', \'wpautop\'            );
add_filter( \'the_content\', \'shortcode_unautop\'  );
add_filter( \'the_content\', \'prepend_attachment\' );
参考上述一些过滤器:
http://codex.wordpress.org/Function_Reference/wptexturize
http://codex.wordpress.org/Function_Reference/convert_smilies
http://codex.wordpress.org/Function_Reference/wpautop

一般来说这应该会让你的工作完成。

function my_messages_shortcode($atts = [], $content = NULL, $tag = \'\') {
    return apply_filters(\'the_content\', get_option(\'my_failure_message\') );
}

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。