Custom Field to post_title

时间:2017-01-26 作者:John

我有一个只使用自定义字段的自定义帖子类型。我正试图找到一种方法来创建post\\u标题,否则它将是空白的。我有以下代码,当我更新帖子时,它成功地做到了这一点。有没有一种方法可以在帖子最初发布时实现这一点,而不是保存在更新中?

function custom_post_type_title($post_id)
{
    global $wpdb;
    if (get_post_type($post_id) == \'my-custom-post-type\') {
        $name = get_post_custom_values(\'custom-field-to-use\');
        $title = $name[0];
        $where = array(\'ID\' => $post_id);
        $wpdb->update($wpdb->posts, array(\'post_title\' => $title), $where);
    } 
}

add_action(\'save_post\', \'custom_post_type_title\');

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

您可以使用save_post

save_post 是在创建或更新帖子或页面时触发的操作,可以从导入、帖子/页面编辑表单、xmlrpc或通过电子邮件发布。

add_action( \'save_post\', \'wpse254017_set_post_title\', 10, 2 );

function wpse254017_set_post_title ( $post_id, $post ){
    //This temporarily removes action to prevent infinite loops
    remove_action( \'save_post\', \'wpse254017_set_post_title\' );

    if ( \'my-custom-post-type\' !== $post->post_type )
        return;

    //GET THE CUSTOM FIELD
    $post_title = get_post_meta( $post_id, \'apt_first_name\', true );

    //UPDATE TITLE
    wp_update_post( array(
        \'ID\'         => $post_id,
        \'post_title\' => $post_title,
    ));

    //redo action
    add_action( \'save_post\', \'wpse254017_set_post_title\', 10, 2 );
}
还可以重新写入挂钩,指定post\\U类型save_post_{post_type}, 这样,就不会在所有post\\u类型上运行挂钩。

add_action( \'save_post_{post_type}\', \'wpse254017_set_post_title\' );

function wpse254017_set_post_title ( $post_id ){
    //This temporarily removes action to prevent infinite loops
    remove_action( \'save_post_{post_type}\', \'wpse254017_set_post_title\' );

    //GET THE CUSTOM FIELD
    $post_title = get_post_meta( $post_id, \'apt_first_name\', true );

    //UPDATE TITLE
    wp_update_post( array(
        \'ID\'         => $post_id,
        \'post_title\' => $post_title,
    ));

    //redo action
    add_action( \'save_post_{post_type}\', \'wpse254017_set_post_title\');
}

相关推荐

functions php file

好的,我正在编辑我的函数。Wordpress中的php文件(关于我的子主题),我删除了一行代码(在删除之前我复制了代码)。这导致了白色的死亡屏幕,所以我简单地粘贴回我删除的代码(是的,我将它粘贴回我删除它的位置),但我仍然有白色的死亡屏幕。我已经完成了这些功能。我上周完成的一个备份中的php文件(功能齐全),并通过FTP将其上载到正确的文件夹,但没有任何效果。我已经尝试再次激活父主题,并创建了另一个子主题,以便比较这两个功能。php文件(将全新的、有效的子主题与不再工作的原始子主题进行比较),代码看起来是