在不支持标题的自定义帖子类型上设置标题

时间:2011-07-28 作者:annabwashere

我有一个名为“profile”的CPT,它只支持编辑器和缩略图。每个用户只能发布一个个人资料。

我正在寻找一种方法,用帖子作者的显示名称预先填充标题和slug字段。现在,如果单击Publish,db中的post\\u状态为“Auto Draft”,URL为“localhost/mytestsite/profile/Auto-Draft-1”。似乎是WPneeds 标题或其他内容不会被视为“已发布”。

我已经检查了几个已经张贴在这里的问题,这一个似乎是我需要的。Custom Post Type with Custom Title

但由于我想要作者的名字,而不是分类法或自定义字段中的值,所以我不知道如何修改代码来反映这一点。

我看到get\\u the\\u author()需要在循环中。

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

您可以在页面中添加隐藏的输入以预先设置标题字段,因为它不在页面上(因为类型不支持标题)。

Slug是从标题生成的,因此您只需要添加标题值。

像这样的东西应该可以工作(尽管未经测试)。。

add_action( \'submitpost_box\', \'hidden_type_title\' );

function hidden_type_title() {
    global $current_user, $post, $post_type;

    // If the current type supports the title, nothing to done, return
    if( post_type_supports( $post_type, \'title\' ) )
        return;

    ?>
    <input type="hidden" name="post_title"value="<?php echo esc_attr( htmlspecialchars( get_the_author_meta( \'display_name\', $current_user->data->ID ) ) ); ?>" id="title" />
    <?php
}
尽管我可能会建议进一步添加代码,并检查作者显示名称是否为空,等等。。。这应该足以与。。(或至少让您开始)……)

SO网友:Ivor Scott

我尝试了被接受的答案,但它只在我第二次更改帖子并保存时起作用。我的代码第一次起作用。此外,我正在使用自定义字段替换标题。

add_action( \'submitpost_box\', \'set_post_type_title_manaully\' );

function set_post_type_title_manaully() {
global $post, $post_type;

// If the current type supports the title, nothing to done, return
if( post_type_supports( $post_type, \'title\' ) )
    return;

$title = esc_attr(htmlspecialchars(get_field(\'advanced_custom_field\')));
// $title = esc_attr(htmlspecialchars(get_post_meta($post->ID,\'custom_field\',true)));
wp_update_post( array( \'ID\'=>$post->ID, \'post_title\'=>$title ) );

结束