您的代码:
add_action(\'admin_menu\', \'reaction_buttons_meta_box2\');
使用
\'add_meta_boxes\'
添加元框。它在
wp-admin/edit-form-advanced.php
文件并传递
$post
对象这个
\'admin_menu\'
行动更频繁。
add_action( \'add_meta_boxes\', \'reaction_buttons_meta_box2\' );
您的代码:
function reaction_buttons_meta2()
{
global $post;
echo $_POST[\'reaction_buttons_off2\'];
这里面什么都没有
$_POST
加载编辑页面时。您可以使用
wp_die()
.
add_action( \'add_meta_boxes\', \'reaction_buttons_meta_box2\' );
function reaction_buttons_meta_box2() {
add_meta_box( \'reaction_buttons2\', \'Reaction Buttons\', \'reaction_buttons_meta2\', \'post\', \'side\' );
add_meta_box( \'reaction_buttons2\', \'Reaction Buttons\', \'reaction_buttons_meta2\', \'page\', \'side\' );
}
function reaction_buttons_meta2() {
wp_die( \'<pre>\' . var_export( $_POST, true ) . \'</pre>\' );
}
在元框中,您应该看到:
array(
)
这意味着$\\u POST中没有任何内容。
您的代码:
update_post_meta($post->ID, \'reaction_buttons_off2\', $_POST[\'reaction_buttons_off2\']);
reaction_buttons_meta_box2()
在帖子/页面保存期间不运行。要在保存时添加函数,请使用以下命令:
add_action( \'add_meta_boxes\', \'reaction_buttons_meta_box2\' );
add_action( \'save_post\', \'wpse_47828_reaction_buttons_meta_box2_save\' );
function wpse_47828_reaction_buttons_meta_box2_save() {
wp_die( \'<pre>\' . var_export( $_POST[\'reaction_buttons_off2\'], true ) . \'</pre>\' );
}
function reaction_buttons_meta2() {
printf( \'<input type="text" id="%1$s" name="%1$s" value="%2$s" />\', \'reaction_buttons_off2\', 12 );
}
function reaction_buttons_meta_box2() {
add_meta_box( \'reaction_buttons2\', \'Reaction Buttons\', \'reaction_buttons_meta2\', \'post\', \'side\' );
add_meta_box( \'reaction_buttons2\', \'Reaction Buttons\', \'reaction_buttons_meta2\', \'page\', \'side\' );
}
刷新编辑器页面并
Update
邮报。网页应生成错误
\'12\'
在里面。在
printf
上面的行。
您的代码:
$meta=get_post_meta($post->ID, $field[\'reaction_buttons_off2\'], true);
此代码使用了一个名为
$field
从未定义过。它应该会产生一个PHP错误。
您的代码:
<input type="text" id="reaction_buttons_off2" name="reaction_buttons_off2" value="<?php echo $meta[reaction_buttons_off2][0]; ?>">
此代码使用名为
reaction_buttons_off2
没有引号。自从
$field
在上面的行中不存在,
$meta
里面没有任何东西和正确的代码
$meta[\'reaction_buttons_off2\'][0]
应生成PHP缺少索引警告。
reaction_buttons_meta2()
应该是这样的:
function reaction_buttons_meta2( $post ) {
$field_name = \'reaction_buttons_off2\';
if ( get_post_meta( $post->ID, $field_name, true ) )
$reaction_buttons_off2 = get_post_meta( $post->ID, $field_name, true );
else
$reaction_buttons_off2 = \'\';
printf( \'<input type="text" id="%1$s" name="%1$s" value="%2$s" />\', $field_name, $reaction_buttons_off2 );
}
保存数据需要进行一些测试:
function wpse_47828_reaction_buttons_meta_box2_save( $post_id ) {
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return;
if ( current_user_can( \'edit_post\', $post_id ) || current_user_can( \'edit_pages\', $post_id ) ) {
$field_name = \'_reaction_buttons_off2\';
if ( isset( $_POST[$field_name] ) )
update_post_meta( $post_id, $field_name, $_POST[$field_name] );
}
}
字段名称,
reaction_buttons_off2
将显示为自定义字段,也可以在其中进行编辑。如果希望避免这种情况,请在两个
wpse_47828_reaction_buttons_meta_box2_save()
并且在
reaction_buttons_meta2()
.
$field_name = \'_reaction_buttons_off2\';
总而言之:
add_action( \'add_meta_boxes\', \'reaction_buttons_meta_box2\' );
add_action( \'save_post\', \'wpse_47828_reaction_buttons_meta_box2_save\' );
function reaction_buttons_meta_box2() {
add_meta_box( \'reaction_buttons2\', \'Reaction Buttons\', \'reaction_buttons_meta2\', \'post\', \'side\' );
add_meta_box( \'reaction_buttons2\', \'Reaction Buttons\', \'reaction_buttons_meta2\', \'page\', \'side\' );
}
function reaction_buttons_meta2( $post ) {
$field_name = \'_reaction_buttons_off2\';
if ( get_post_meta( $post->ID, $field_name, true ) )
$reaction_buttons_off2 = get_post_meta( $post->ID, $field_name, true );
else
$reaction_buttons_off2 = \'\';
printf( \'<input type="text" id="%1$s" name="%1$s" value="%2$s" />\', $field_name, $reaction_buttons_off2 );
}
function wpse_47828_reaction_buttons_meta_box2_save( $post_id ) {
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return;
if ( current_user_can( \'edit_post\', $post_id ) || current_user_can( \'edit_pages\', $post_id ) ) {
$field_name = \'_reaction_buttons_off2\';
if ( isset( $_POST[$field_name] ) )
update_post_meta( $post_id, $field_name, $_POST[$field_name] );
}
}
Note: 您应该在保存期间向字段中添加一些验证,最好也添加一个nonce来检查此表单是否确实来自WordPress admin。我不知道
current_user_can()
将足够安全。