从元数据迁移到wp_EDITOR()

时间:2012-04-20 作者:nandac

我得到了一个客户要求,wordpress中可用的编辑工具必须可用于显示在特定帖子/页面侧栏上的内容。

要显示的内容最初是使用metaboxes实现的,metaboxes包含一个文本区域,其中的内容作为原始HTML输入,没有插入/上载功能。

我已决定将此设计迁移到wp_editor() 因为它提供了所有wordpress本机编辑功能(不建议使用metabox)。但我不知道如何获取输入的数据并将其发布到后端,然后配合以下操作来保存数据:

add_action( \'save_post\', \'save_sidebar_content\' );

我还使用了以下助手函数:

get_post_meta();
add_post_meta();
update_post_meta();
delete_post_meta();
我想知道在使用wp\\u editor()时,是否有任何这样的函数可以简化与此数据相关的CRUD操作。

提前谢谢。导航

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

它的工作原理与常规的文本区域一样,只是数据被转义,所以当您调用保存的数据时,请确保使用html_entity_decode 这是一个非常简单的演示类,看看字段是如何创建的。

if (!class_exists(\'wp_editor_meta_box\')){
        class wp_editor_meta_box{

                public function __construct(){
                        /* Define the custom box */
                        add_action( \'add_meta_boxes\', array($this,\'wp_editor__add_custom_box\' ));

                        /* Do something with the data entered */
                        add_action( \'save_post\', array($this,\'wp_editor__save_postdata\' ));
                }

                /* Adds a box to the main column on the Post and Page edit screens */
                function wp_editor__add_custom_box() {
                        add_meta_box( 
                                \'wp_editor_box\',
                                __( \'WP Editor Box\' ),
                                array($this,\'wp_editor_meta_box\'),
                                \'post\' 
                        );
                }

                /* Prints the box content */
                function wp_editor_meta_box( $post ) {

                        // Use nonce for verification
                        wp_nonce_field( plugin_basename( __FILE__ ), \'wp_editor_nonce\' );

                        $field_value = get_post_meta( $post->ID, \'_wp_editor_\', false );
                        wp_editor( html_entity_decode($field_value), \'_wp_editor_\' );
                }

                /* When the post is saved, saves our custom data */
                function wp_editor__save_postdata( $post_id ) {

                        // verify if this is an auto save routine. 
                  // If it is our form has not been submitted, so we dont want to do anything
                  if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) 
                          return;

                  // verify this came from the our screen and with proper authorization,
                  // because save_post can be triggered at other times
                  if ( ( isset ( $_POST[\'wp_editor_nonce\'] ) ) && ( ! wp_verify_nonce( $_POST[\'wp_editor_nonce\'], plugin_basename( __FILE__ ) ) ) )
                          return;

                  // Check permissions
                  if ( ( isset ( $_POST[\'post_type\'] ) ) && ( \'page\' == $_POST[\'post_type\'] )  ) {
                        if ( ! current_user_can( \'edit_page\', $post_id ) ) {
                                        return;
                                }               
                  }
                        else {
                                if ( ! current_user_can( \'edit_post\', $post_id ) ) {
                                        return;
                                }
                        }

                  // OK, we\'re authenticated: we need to find and save the data
                        if ( isset ( $_POST[\'_wp_editor_\'] ) ) {
                                update_post_meta( $post_id, \'_wp_editor_\', $_POST[\'_wp_editor_\'] );
                        }

                }
        }//end class
}//end if

new wp_editor_meta_box();

结束

相关推荐

metabox upload file

我有一个带有上传文件功能的自定义元文件,但问题是,当点击下面的jQuery代码“插入到帖子”时,我无法获得fileurl按钮的值 window.send_to_editor = function(html) { dlink = jQuery(\'button.urlfile\',html).attr(\'title\'); jQuery(\'#download_link\').val(dlink);