此问题与WPSE上的另一个问题有关:Set post title from two meta fields
我正在寻找一种定义WP自定义帖子类型的方法title 和slug 来自自定义字段(即名字和姓氏)。这样,如果我在fname字段中输入“John”,在lname字段中输入“Doe”,标题将是“johndoe”,而slug将是“johndoe”。
上面链接的线程上提供的解决方案可行,但它要求我在点击“发布”之前先“保存草稿”。如果我立即单击“publish”(发布),帖子标题只会是一个破折号/连字符“-”,而slug就是帖子ID。
有人知道如何在不需要先“保存草稿”的情况下使其工作吗?
---更新---这是我正在使用的代码。它基于上面链接的线程。
function my_set_empname_title( $data , $postarr ) {
if($data[\'post_type\'] == \'employees\') {
$emp_fname = get_post_meta($postarr[\'ID\'], \'emp_first_name\', true);
$emp_lname = get_post_meta($postarr[\'ID\'], \'emp_last_name\', true);
$new_title = "$emp_fname" . \'-\' . "$emp_lname";
$post_slug = sanitize_title_with_dashes($new_title, \'\', $context = \'save\');
$post_slugsan = sanitize_title($post_slug);
$data[\'post_title\'] = $new_title;
$data[\'post_name\'] = $post_slugsan;
}
return $data;
}
add_filter( \'wp_insert_post_data\' , \'my_set_empname_title\' , \'99\', 2 );
SO网友:czerspalace
尝试替换
$emp_fname = get_post_meta($postarr[\'ID\'], \'emp_first_name\', true);
$emp_lname = get_post_meta($postarr[\'ID\'], \'emp_last_name\', true);
使用
$emp_fname = $_POST[\'emp_first_name\'];
$emp_lname = $_POST[\'emp_last_name\'];
将$\\u POST数组键替换为表单上的任何字段名称