我有3个自定义字段,如下所示。我想在保存/发布时使用它们生成标题。。。等
如果我将帖子id作为数字插入,但不是像这样,代码就会工作。。。
function set_post_title( $data , $postarr ) {
$title = "";
$post_id = $postarr[\'ID\']; //NOT WORKING
$last_name = get_post_meta($post_id, \'last-name\', true);
$middle_name = get_post_meta($post_id, \'middle-name\', true);
$first_name = get_post_meta($post_id, \'first-name\', true);
// $last_name = $data[\'last-name\'];
// $middle_name = $data[\'middle-name\'];
// $first_name = $data[\'first-name\'];
// also didn\'t work...
if ( $last_name != "" ) {
$title .= $last_name . ", ";
}
if ( !empty( $first_name ) ) {
$title .= $first_name;
}
if ( !empty( $middle_name ) ) {
$title .= " " . $middle_name;
}
$data[\'post_title\'] = $title."aa".$post_id;
return $data;
}
add_filter( \'wp_insert_post_data\' , \'set_post_title\' );
如果更容易,我可以使用以下命令将字段值保存在另一个函数中:
update_post_meta( $post_id, \'first-name\', $_POST[\'first-name\'] );
是否有类似于更新标题的内容?
这让我抓狂:)
最合适的回答,由SO网友:shanebp 整理而成
从codex page
如果要访问$postarr,必须在add\\u filter()中为$accepted\\u args变量传递2。
因此,请使用以下方法:
add_filter( \'wp_insert_post_data\', \'set_post_title\', 99, 2 );