我有一个自定义插件,在管理部分使用自定义post类型的数据输入功能。我想使用一个textarea表单,以及我目前使用的复选框、选择和文本输入字段。然而,当我更新bost时,我的回调将接收所有其他输入字段,而不是textarea字段。
代码相当大,涵盖了许多不同的输入类型,这是对绘制和保存调用的改进:
function CustomInput()
{
add_meta_box( \'List_Group1\',
__( \'Lists - Card Records : Manual Input\', \'myplugin_textdomain\' ),
\'DrawCallBack\',
\'customlist\',
\'normal\',
\'high\',
$args
);
}
add_action( \'add_meta_boxes\', \'CustomInput\' );
add_action( \'save_post\', \'SaveFields\');
function DrawCallBack($post)
{
$Record = GetDBRecord();
echo \'<textarea id="bizdesc" rows="2" cols="50">\';
echo $Record[\'BizDescp\'];
echo \'</textarea>\';
echo \'<input type=text id="YourName" name="YourName" value="\' .$Record[\'Name\'] .\'"/>\'
}
function SaveFields($post_id)
{
$screen = get_current_screen();
if(strcmp($screen->post_type, \'customlist\') !=0)
return;
$Desc = sanitize_text_field( $_POST[ \'bizdesc \' ] );
$Name = sanitize_text_field( $_POST[ \'YourName\' ] );
}
标准输入字段很好且正确。textarea字段没有。不知道为什么?
有什么想法吗?
SO网友:Qaisar Feroz
您忘记添加name ="bizdesc"
到您的textarea
, 所以这个
function DrawCallBack($post)
{
$Record = GetDBRecord();
echo \'<textarea id="bizdesc" rows="2" cols="50">\';
echo $Record[\'BizDescp\'];
echo \'</textarea>\';
echo \'<input type=text id="YourName" name="YourName" value="\' .$Record[\'Name\'] .\'"/>\'
}
应该是
function DrawCallBack( $post )
{
$Record = GetDBRecord();
echo \'<textarea name="bizdesc" id="bizdesc" rows="2" cols="50">\';
echo esc_textarea( $Record[\'BizDescp\'] );
echo \'</textarea>\';
echo \'<input type="text" id="YourName" name="YourName" value="\' .esc_attr( $Record[\'Name\'] ) .\'"/>\';
}
我希望这有帮助。