在WP_INSERT_POST之前将POST_ID插入GUID

时间:2013-02-02 作者:Aori Nevo

我想在wp\\u posts表中插入数据,插入的post\\u id位于“guid”中,该记录不存在。下面是我得到的最接近的值,但这不起作用($postarr[\'ID\']等于0)。

function filter_handler( $data , $postarr )
{
if($data[\'post_type\']==\'ai1ec_event\'){
    $my_post_id = $postarr[\'ID\'];
    $data[\'guid\'] = get_option(\'siteurl\') .\'/?post_type=ai1ec_event&p=\'.$my_post_id.\'&instance_id=\';
}

return $data;
}

add_filter( \'wp_insert_post_data\' , \'filter_handler\' , \'99\', 2 );

$mypost = array(
  \'post_author\'     => 1,
 \'post_content\'     => \'Test\', 
 \'post_status\'      => \'publish\',
 \'post_title\'       => $_GET[\'assignment_name\'],
 \'post_type\'        => \'ai1ec_event\',
 \'guid\'     => \'\'
); 

$postid = wp_insert_post($mypost);

1 个回复
最合适的回答,由SO网友:david.binda 整理而成

你为什么需要这个?数据库中的ID是自动递增的-它自己管理它的值。如果您的目标是设置自定义guid,则应在$post\\u id=wp\\u inserted\\u post($mypost)之后通过wp\\u update\\u post创建插入的帖子后立即更新该帖子;像这样:

...Your code above...
$postid = wp_insert_post($mypost);
$data = array(
   \'ID\' => $postid,
   \'guid\' => get_option(\'siteurl\') .\'/?post_type=ai1ec_event&p=\'.$postid.\'&instance_id=\'
);
wp_update_post( $data );

结束

相关推荐