Saving meta box data?

时间:2013-07-23 作者:john Doe

我真正想要的是将元框数据保存A)作为循环中可访问的全局变量,B)将数据保存到文本框中,以便当用户按update时,一旦更新,他们所写的内容就会显示在文本框中。目前,我知道它不符合B)的标准,我不确定它是否可以作为循环中的全局变量访问。有什么帮助吗?

add_action( \'add_meta_boxes\', \'testimonial_text_box\' );

function testimonial_text_box() {
    add_meta_box( 
        \'testimonial_text_box\',
        __( \'Testimonial Text:\', \'myplugin_textdomain\' ),
        \'testimonial_text_box_content\',
        \'testimonial\',
        \'normal\',
        \'high\'
    );
}

function testimonial_text_box_content( $post ) {
    $values = get_post_custom( $post->ID );  
    $text = isset( $values[\'my_meta_box_text\'] ) ? esc_attr( $values[\'my_meta_box_text\'][0] ) : ”;  
    $selected = isset( $values[\'my_meta_box_select\'] ) ? esc_attr( $values[\'my_meta_box_select\'][0] ) : ”;  
    $check = isset( $values[\'my_meta_box_check\'] ) ? esc_attr( $values[\'my_meta_box_check\'][0] ) : ”;  

    wp_nonce_field( plugin_basename( __FILE__ ), \'testimonial_text_box_content_nonce\' );
  $value = get_post_meta( $post->ID, \'_my_meta_value_key\', true );
  echo \'<label for="testimonial_text">\';
       _e("Text body of the testimonial:", \'myplugin_textdomain\' );
  echo \'</label> \';
    echo \'<br/>\';
  echo \'<textarea align="top" id="testimonial_text" name="testimonial_text" value="\'.esc_attr($value).\'" style="width:100%;height:200px;margin:5px -20px 3px 0;" /></textarea>\';
}

add_action( \'save_post\', \'testimonial_text_box_save\' );
function testimonial_text_box_save( $post_id ) {

    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) 
    return;

    if ( !wp_verify_nonce( $_POST[\'testimonial_text_box_content_nonce\'], plugin_basename( __FILE__ ) ) )
    return;

    if ( \'testimonial\' == $_POST[\'post_type\'] ) {
        if ( !current_user_can( \'edit_page\', $post_id ) )
        return;
    } else {
        if ( !current_user_can( \'edit_post\', $post_id ) )
        return;
    }
    $testimonial_text = $_POST[\'testimonial_text\'];
    update_post_meta( $post_id, \'testimonial_text\', $testimonial_text );
}

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

您尝试的操作不会像您尝试的那样工作,因为在保存后WordPress将处理数据,然后重定向回原始页面。这意味着任何global 你在重定向之前设置的,之后就不会有重定向了。

但是,您的自定义元信息应通过以下方式检索--$values = get_post_custom( $post->ID );-- 因此,您应该可以在testimonial_text_box_content 同一行代码将在前端的循环中获取值(所有自定义post meta)。

当你回应你的textarea 你想include your previous content between the opening and closing tags, 与段落标记类似。这与input 表单元素。

echo \'<textarea align="top" id="testimonial_text" name="testimonial_text" value="\'.esc_attr($value).\'" style="width:100%;height:200px;margin:5px -20px 3px 0;" />\'.$values[\'testimonial_text\'].\'</textarea>\';
我在这里根据记忆工作,目前无法进行测试,因此可能会有错误,但希望它能推动你前进。

除此之外,我没有测试代码,但顺便说一下,我没有发现任何明显的错误。

结束

相关推荐

在使用自定义Metabox时获取不同大小的图像缩略图

我正在为我的新项目中的一个页面使用自定义metabox,我正在使用它上载图像,并将其附加到页面。它工作得很好,我可以选择图像或使用WordPress的本地上传程序上传图像,然后附加它。问题是我只得到了大尺寸的图像。我必须通过指定其宽度和高度来调整其大小。有没有办法通过WordPress本机上传程序获取上传或选定图像的其他大小。我知道我可以用wp_get_attachment_image_src 函数,但为了使用此函数,我必须获取attachment\\u id,我没有它。我只有一个图像url。我不知道我是