我真正想要的是将元框数据保存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 );
}
最合适的回答,由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>\';
我在这里根据记忆工作,目前无法进行测试,因此可能会有错误,但希望它能推动你前进。
除此之外,我没有测试代码,但顺便说一下,我没有发现任何明显的错误。