我添加了一个元对象,并在其中添加了一个辅助标题和一个文本编辑器,但如果我写了什么,它不会保存它或在我的页面上显示它

时间:2020-03-12 作者:Fatima Shakeel

功能。php文件:

function add_custom_meta_box2()
{
         add_meta_box(
                \'meta-box2\',
                \'SD Extra Page/Post Options \',
                \'custom_meta_box_markup2\',
                \'page\',
                \'normal\',
                \'low\'
                );
}
add_action(\'add_meta_boxes\', \'add_custom_meta_box2\');

function custom_meta_box_markup1(){

}

function custom_meta_box_markup2($post)
{
    global $post;
    wp_nonce_field( basename(__FILE__ ), \'custom_meta2_nonce\');
    $custom_stored_meta2 = get_post_meta( $post->ID, \'sec_title\', true );

    ?>
    <div>
    <div class="meta-row">
    <div class="meta-th">
      <label for="sec_title" class="sec-row-title"> Secondary ID</label>
    </div>

    <div class="meta-td">

        <input type="text" name="sec_title" id="sec_title" value="<?php echo esc_attr( $custom_stored_meta2); ?>"/>
    </div>

    </div>
    </div>

    <div class="meta">
    <div class="meta-th">
    <span> Principle Duties</span>
    </div>
    </div>

    <div class="meta-editor">


    <?php
    $content = get_post_meta($post->ID, \'principle_duties\', true);
    $editor = \'principle_duties\';
    $settings = array(
       \'textarea_rows\' => 8,
       \'media_buttons\' => false,
    );

    wp_editor( $content, $editor, $settings);

    ?>
    </div>

    <?php
}

function custom_meta2_save($post_id){

    //checks save status
    $is_autosave = wp_is_post_autosave( $post_id);
    $is_revision = wp_is_post_revision( $post_id);
    $is_valid_nonce = ( isset( $POST[ \'custom_meta2_nonce\' ] ) && wp_verify_nonce( $_POST[\'custom_meta2_nonce\' ],basename( __FILE__)) ) ? \'true\': \'false\';
    if ( ! current_user_can( \'edit_post\', $post_id ) ) {
        return;
    }
    //Exit scripts depending on save status
    if( $is_autosave || $is_revision || !$is_valid_nonce ){
        return;
    }

    if( isset( $POST[\'sec_title\'] ) ){
        update_post_meta( $post_id , \'sec_title\', sanitize_text_field( $_POST[ \'sec_title\'] ) );
    }

    if( isset( $POST[\'principle_duties\'] ) ){
        update_post_meta( $post_id , \'principle_duties\', sanitize_text_field( $_POST[ \'principle_duties\'] ) );
    }
}

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

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

您已使用$post 而不是$_POST 在保存功能中。这就是为什么不保存数据。

您应该使用:

$_POST[ \'custom_meta2_nonce\' ]
$_POST[\'sec_title\']
$_POST[\'principle_duties\']
而不是

$POST[ \'custom_meta2_nonce\' ]
$POST[\'sec_title\']
$POST[\'principle_duties\']
使用以下代码保存数据:

function custom_meta2_save($post_id){
    //checks save status
    $is_autosave = wp_is_post_autosave( $post_id);
    $is_revision = wp_is_post_revision( $post_id);
    $is_valid_nonce = ( isset( $_POST[ \'custom_meta2_nonce\' ] ) && wp_verify_nonce( $_POST[\'custom_meta2_nonce\' ],basename( __FILE__)) ) ? \'true\': \'false\';
    if ( ! current_user_can( \'edit_post\', $post_id ) ) {
        return;
    }
    //Exit scripts depending on save status
    if( $is_autosave || $is_revision || !$is_valid_nonce ){
        return;
    }

    if( isset( $_POST[\'sec_title\'] ) ){
        update_post_meta( $post_id , \'sec_title\', sanitize_text_field( $_POST[ \'sec_title\'] ) );
    }

    if( isset( $_POST[\'principle_duties\'] ) ){
        update_post_meta( $post_id , \'principle_duties\', sanitize_text_field( $_POST[ \'principle_duties\'] ) );
    }
}
add_action(\'save_post\', \'custom_meta2_save\');
您可以使用自定义页面模板文件或页面模板文件在页面中显示数据:

$sec_title = get_post_meta( get_the_id(), \'sec_title\', true );
$principle_duties = get_post_meta(get_the_id(), \'principle_duties\', true);

echo "Secondary ID :".$sec_title;
echo "<br>Principle duties :".$principle_duties;

相关推荐

修改CPT上的发布Metabox位置

我一直在努力想如何正确地做到这一点,但还没有找到解决办法。我有一个带ACF字段的CPT。我不能使用前端表单,因为我正在跨多个子网站同步CPT,所以需要使用后端表单。我已经设置好了,发布表单默认为一列,但我无法将发布元框移动到表单底部。。。它位于帖子标题字段下方。这似乎很愚蠢。S你能提供的任何帮助都是巨大的!谢谢