为什么我不能在wp_EDITOR中保存/更新数据?

时间:2014-09-15 作者:Steven

在查看了这里和StackOverflow上的各种建议之后,我仍然不明白为什么我的解决方案不起作用。

我加了一个额外的wp_editor到我的帖子/页面,但数据未保存/更新。我做错了什么?

class langauge{

    function __construct() {
        add_action(\'edit_form_after_editor\', array($this, \'custom_meta_box_lang\'));
        add_action(\'save_post\', array($this, \'save_en_content\'));
    }

    function custom_meta_box_lang(){
        global $post;
        // set \'your_meta_key\' to the actual key
        $content = get_post_meta($post->ID, \'_content_en\', true);

        // only low case [a-z], no hyphens and underscores
        $editor = \'contenten\';

        // See my comment below
        $editor_settings = array(
                                \'wpautop\'       =>      true,
                                \'media_buttons\' =>      true,
                                \'textarea_name\' =>      \'content_en\',
                                \'textarea_rows\' =>      10,
                                \'drag_drop_upload\' =>   true);

        wp_editor( stripslashes( $content ), $editor, $editor_settings);

    }

    function save_en_content($post_id){
        if(isset($_POST[\'content_en\']) && $_POST[\'content_en\'] != \'\')
            update_post_meta($post_id, \'content_en\', $_POST[\'content_en\']);
        else
            delete_post_meta($post_id, \'content_en\');
    }


}

new langauge();

2 个回复
最合适的回答,由SO网友:DrMosko 整理而成

您正在使用:

// only low case [a-z], no hyphens and underscores
$editor = \'contenten\';
然后尝试使用不同的名称获取它:

  if(isset($_POST[\'content_en\']) && $_POST[\'content_en\'] != \'\')
另一件事是你使用不同的键,如@vancoder所说

还要记住清理数据:https://codex.wordpress.org/Data_Validation

此代码适用于u:

 function __construct() {
        add_action(\'edit_form_after_editor\', array($this, \'custom_meta_box_lang\'));
        add_action(\'save_post\', array($this, \'save_en_content\'));
    }

    function custom_meta_box_lang(){
        global $post;
        // set \'your_meta_key\' to the actual key
        $content = get_post_meta($post->ID, \'content_en\', true);

        // only low case [a-z], no hyphens and underscores
        $editor = \'contenten\';

        // See my comment below
        $editor_settings = array(
                                \'wpautop\'       =>      true,
                                \'media_buttons\' =>      true,
                                \'textarea_name\' =>      \'content_en\',
                                \'textarea_rows\' =>      10,
                                \'drag_drop_upload\' =>   true);

        wp_editor( stripslashes( $content ), $editor, $editor_settings);

    }

    function save_en_content($post_id){
        if(isset($_POST[\'contenten\']) && $_POST[\'contenten\'] != \'\')
            update_post_meta($post_id, \'content_en\', $_POST[\'contenten\']);
        else
            delete_post_meta($post_id, \'content_en\');
    }

SO网友:vancoder

您可能正在保存它,但之后不会将其加载回编辑器。您正在将其保存为content_en, 但你想把它拿回来_content_en - 带有下划线。

您需要与名称保持一致。

下划线前缀用于从默认自定义字段元框中隐藏自定义元。

结束

相关推荐

第一次提交时WP-EDITOR为空

我在一个简单的插件中使用wp编辑器,但我遇到了一个问题,第一次点击提交按钮时,数据库中的内容是空白的。<?php $editor_id = \'mycontent\'; wp_editor($content, $editor_id ); ?> 因此,我尝试使用以下内容提醒内容:if (j(\".wp-content-wrap\").hasClass(\"tmce-active\")){ alert(