我一直在开发一个自定义post-type元框实现,它允许我更改post\\u日期以匹配“date”元框中的值。
该功能运行完美,除非当我尝试添加新的自定义帖子时,我收到一个空白页面!我知道这是一个函数,因为如果我删除它,我可以创建一个新的帖子,没有问题。
以下是我的功能:
function cfc_reset_postdate( $data ) {
// If it is our form has not been submitted, so we dont want to do anything
if(defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) return;
if($data[\'post_type\'] == \'scripture-memory\') {
$date = $_POST[\'cfc_date\'];
$date = DateTime::createFromFormat(\'D - M j, Y\', $date);
$date = $date->format(\'Y-m-d\');
$data[\'post_date\'] = $date;
return $data;
}
}
add_filter( \'wp_insert_post_data\', \'cfc_reset_postdate\', \'99\', 1);
你知道为什么我在创建新帖子时会收到空白页吗?
编辑:
我已更改代码以反映您的想法:
函数cfc\\U reset\\U postdate($数据){
//if($data[\'post_type\'] == \'scripture-memory\') {
if($_POST[\'cfc_date\'] != \'\') {
$date = $_POST[\'cfc_date\'];
$date = DateTime::createFromFormat(\'D - M j, Y\', $date);
$date = $date->format(\'Y-m-d\');
$data[\'post_date\'] = $date;
return $data;
}
//}
}
添加过滤器(\'wp\\U insert\\U post\\U data\',\'cfc\\U reset\\U postdate\',\'99\',1);
唯一的问题是,当我创建一个新帖子时,它只允许我创建一个草稿,然后它会出现一个空白页面,上面写着“你确定要这样做吗?”
我将继续努力,看来我们正在取得进展。谢谢大家的帮助!
最合适的回答,由SO网友:Caleb 整理而成
太棒了-我成功了!
感谢大家的帮助和评论。原来函数有问题,因为它正在接收$数据,但从未返回它,因为我在if语句中有“return$data”!
另一个问题是“WPSearch 2”插件,它破坏了我的“新帖子”功能-奇怪:(
以下是完整的正确功能:
function cfc_reset_postdate( $data ) {
if($data[\'ID\']) { $postarr[\'ID\'] = $data[\'ID\']; }
if($data[\'post_type\'] == \'scripture-memory\') {
if($_POST[\'cfc_date\']) {
$date = $_POST[\'cfc_date\'];
$date = DateTime::createFromFormat(\'D - M j, Y\', $date);
$date = $date->format(\'Y-m-d\');
$data[\'post_date\'] = $date;
}
}
return $data;
}
add_filter( \'wp_insert_post_data\', \'cfc_reset_postdate\', \'99\', 1);
希望这个功能能帮助任何想用自定义元框日期更改post_日期的人。