在定制POST类型/元盒方面有问题

时间:2012-02-01 作者:Caleb

我一直在开发一个自定义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);

唯一的问题是,当我创建一个新帖子时,它只允许我创建一个草稿,然后它会出现一个空白页面,上面写着“你确定要这样做吗?”

我将继续努力,看来我们正在取得进展。谢谢大家的帮助!

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_日期的人。

结束

相关推荐

在短代码中获取Metabox值?

是否可以在该页上执行的短代码中获取该页的元盒值?场景:我每个页面都有一个侧边栏元数据库</我有一些自定义的Gallery快捷码我的gallery快捷码输出600x200幅图像(我在这里使用timthumb)。但如果没有侧栏,我希望它显示900x300。通常我会使用:$sidebar = get_post_meta($post->ID, \'metabox_sidebar\', true); if($sidebar == \"true\") { do something }