WordPress:add_meta_box错误

时间:2016-01-06 10:44:27

标签: php wordpress

我重写了WordPress示例来创建一个元框,使用函数作为变量:

$myplugin_add_meta_box = function() {
    add_meta_box('myplugin_sectionid', 'Testing', $myplugin_meta_box_callback, 'page' );
};

add_action( 'add_meta_boxes', $myplugin_add_meta_box );

$myplugin_meta_box_callback = function( $post ) {

    wp_nonce_field( 'myplugin_save_meta_box_data', 'myplugin_meta_box_nonce' );

    $value = get_post_meta( $post->ID, '_my_meta_value_key', true );

    echo '<label for="myplugin_new_field">';
    _e( 'Description for this field', 'myplugin_textdomain' );
    echo '</label> ';
    echo '<input type="text" id="myplugin_new_field" name="myplugin_new_field" value="' . esc_attr( $value ) . '" size="25" />';
};

但是出现了这个错误:

  

警告:call_user_func()期望参数1是有效的回调,   没有给出的数组或字符串   1037行/var/www/public/wp-admin/includes/template.php

我认为错误与将函数用作变量有关。

2 个答案:

答案 0 :(得分:3)

add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );
function myplugin_add_meta_box() {
    add_meta_box('myplugin_sectionid', 'Testing', 'myplugin_meta_box_callback', 'page' );
}
function myplugin_meta_box_callback ( $post ) {
    wp_nonce_field( 'myplugin_save_meta_box_data', 'myplugin_meta_box_nonce' );
    $value = get_post_meta( $post->ID, '_my_meta_value_key', true );
    echo '<label for="myplugin_new_field">';
    _e( 'Description for this field', 'myplugin_textdomain' );
    echo '</label> ';
    echo '<input type="text" id="myplugin_new_field" name="myplugin_new_field" value="' . esc_attr( $value ) . '" size="25" />';
};

myplugin_meta_box_callback 声明为函数,而不是变量。

答案 1 :(得分:0)

找到解决方案:

add_meta_box('myplugin_sectionid', 'Testing', __NAMESPACE__ . '\\myplugin_meta_box_callback', 'page' );