将文本区用于自定义帖子类型

时间:2019-03-09 作者:Debbie Kurth

我有一个自定义插件,在管理部分使用自定义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字段没有。不知道为什么?

有什么想法吗?

2 个回复
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\'] ) .\'"/>\';
}
我希望这有帮助。

SO网友:Debbie Kurth

问题已解决。这是一个字段命名问题。

相关推荐

谁更新wp-admin/core文件?

我可以看到这是一个CDN文件,我无法访问它。我的安全插件提醒我,wp管理/核心文件已被修改,但我没有更改任何内容。我还没有更新到5.0。那么是谁改变的呢?如果这是重复的,我很抱歉。我只能找到关于核心更新的“如何”帖子,没有任何具体说明谁实际更新了它。我只是不确定这是安全问题还是Wordpress的正常过程。Edit: 这是有问题的文件