从自定义域定义帖子的标题和插件

时间:2014-03-15 作者:delpino

此问题与WPSE上的另一个问题有关:Set post title from two meta fields

我正在寻找一种定义WP自定义帖子类型的方法titleslug 来自自定义字段(即名字和姓氏)。这样,如果我在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 );

1 个回复
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数组键替换为表单上的任何字段名称

结束

相关推荐

How can I find plugins' slug?

我想知道如何才能找到插件的slug(slug=WordPress用来更新插件和确定哪些插件当前处于活动状态的内部名称)?它通常是插件的文件夹名,但如果插件没有文件夹,则是其文件名(如hello.php)。是否有其他例外情况?大小写字符重要吗</插件的slug是否可以与其文件夹名不同?如果有一个叫做hello的插件呢。php和另一个/您好。php/您好。php