我重写了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
我认为错误与将函数用作变量有关。
答案 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' );