简体   繁体   English

WordPress自定义帖子类型元框tinyMCE

[英]WordPress Custom Post Type Meta Box tinyMCE

I've created a custom post type that needs a WYSIWYG editor for a person's contact information. 我创建了一个自定义帖子类型,需要一个所见即所得编辑器来获取一个人的联系信息。

The Meta Box displays and the WYSIWYG editor displays but the content does not get saved or spit back out after clicking update. 显示“ Meta Box”,并显示“ WYSIWYG”编辑器,但单击“更新”后,内容未保存或吐出。 What am I doing wrong? 我究竟做错了什么? Thanks. 谢谢。

// Create Missionary Meta Box
function my_admin() {
add_meta_box( 'missionary_meta_box',
    'Missionary Contact Details',
    'display_missionary_meta_box',
    'missionaries', 'normal', 'high'
);
}

// Put Fields In Missionary Meta Box
function display_missionary_meta_box( $missionaries ) {
$missionary_contact_details = get_post_meta($post->ID, 'missionary_contact_details', true);
?>
<table>
<tr>
    <td><?php wp_editor($missionary_contact_details, 'missionary_contact_details', array(
            'wpautop'               =>      true,
            'media_buttons' =>      false,
            'textarea_name' =>      'missionary_contact_details',
            'textarea_rows' =>      10,
            'teeny'                 =>      true
            )); ?>
        </td>
</tr>
</table>
<?php
}


add_action( 'save_post', 'add_missionary_fields', 10, 2 );

function add_missionary_fields( $missonaries_id, $missionaries ) {
    // Check post type for missionary data
    if ( $missionaries->post_type == 'missionaries' ) {
        // Store data in post meta table if present in post data
        if(isset($_POST['missionary_contact_details']) && $_POST['missionary_contact_details'] != '')
        update_post_meta($post_id, 'missionary_contact_details', $_POST['missionary_contact_details']);
    else
            delete_post_meta($post_id, 'missionary_contact_details');
    }
}

for function "display_missionary_meta_box", argument name should be $post instead of $missionaries in order to user $post->ID in the function 对于函数“ display_missionary_meta_box”,参数名称应为$post而不是$missionaries ,以便在函数中使用$post->ID

// Put Fields In Missionary Meta Box
function display_missionary_meta_box( $post ) {
$missionary_contact_details = get_post_meta($post->ID, 'missionary_contact_details', true);
?>
<table>
<tr>
    <td><?php wp_editor($missionary_contact_details, 'missionary_contact_details', array(
            'wpautop'               =>      true,
            'media_buttons' =>      false,
            'textarea_name' =>      'missionary_contact_details',
            'textarea_rows' =>      10,
            'teeny'                 =>      true
            )); ?>
        </td>
</tr>
</table>
<?php
}


add_action( 'save_post', 'add_missionary_fields', 10, 1 );

function add_missionary_fields( $post_id ) {
    // Check post type for missionary data
    if ( $_POST['post_type'] == "missionaries") {
        // Store data in post meta table if present in post data
        if(isset($_POST['missionary_contact_details']) && $_POST['missionary_contact_details'] != '')
        update_post_meta($post_id, 'missionary_contact_details', $_POST['missionary_contact_details']);
    else
            delete_post_meta($post_id, 'missionary_contact_details');
    }
}

Edit removed my previous statement, looks like save_post hook does have a few parameters, 1 being post_id and the other being the post object - Reference 编辑删除了我的前save_post语句,看起来save_post钩子确实具有一些参数,其中1个是post_id ,另一个是post对象- 参考

An inconsistency is that even though you pass $missonaries_id as your post_id , when you save your meta you use $post_id which is a variable that doesn't exist in this scope according to your code. 不一致之处在于,即使您将$missonaries_id传递为post_id ,当您保存元数据时,也会使用$post_id ,根据您的代码,该变量在此范围内不存在。 Try something like this: 尝试这样的事情:

add_action( 'save_post', 'add_missionary_fields', 10, 2 );
function add_missionary_fields( $missonaries_id, $missionaries  ) {

    // Check post type for missionary data
    if ( $missionaries->post_type == 'missionaries' ) {
        // Store data in post meta table if present in post data
        if(isset($_POST['missionary_contact_details']) && $_POST['missionary_contact_details'] != '')
        update_post_meta($missonaries_id, 'missionary_contact_details', $_POST['missionary_contact_details']);
    else
            delete_post_meta($missonaries_id, 'missionary_contact_details');
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM