如何自动插入页面内容作为标题?

时间:2013-02-22 作者:Jodi Warren

我有一个没有标题字段的自定义帖子类型。这些是简短的状态消息,其中只有内容重要。RSS提要和permalink将标题显示为自动草稿,这不是很有用。理想情况下,它应该有帖子内容,或者至少有前10个左右的单词。

我尝试了此功能,但它仍然显示为自动拔模:

add_filter(\'title_save_pre\', \'save_title\');
function save_title($my_post_title) {
        if ($_POST[\'post_type\'] == \'servicestatus\') :
          $new_title = wp_trim_words( $_POST[\'content\'], $num_words = 10, $more = null )
          $my_post_title = $new_title;
        endif;
        return $my_post_title;
}

add_filter(\'name_save_pre\', \'save_name\');
function save_name($my_post_name) {
        if ($_POST[\'post_type\'] == \'servicestatus\') :
          $new_name = wp_trim_words( $_POST[\'content\'], $num_words = 10, $more = null )
          $my_post_name = $new_name;
        endif;
        return $my_post_name;
}

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

我想save_post 动作钩是合适的。如果帖子标题已经设置好,可能需要插入一些检查($post_object->post_title), 因为这段代码总是根据内容更新标题。

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

function save_post_wpse_87921( $post_id, $post_object ) 
{
    // Auto save?
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )  
        return;

    // Correct post_type
    if ( \'servicestatus\' != $post_object->post_type )
        return;

    $new_title = wp_trim_words( $post_object->post_content, $num_words = 10, $more = \'\' );

    // Unhook this function so it doesn\'t loop infinitely
    remove_action( \'save_post\', \'save_post_wpse_87921\' );

    // Call wp_update_post update, which calls save_post again. 
    wp_update_post( array( 
        \'ID\' => $post_id,
        \'post_title\' => $new_title
    ));

    add_action( \'save_post\', \'save_post_wpse_87921\', 10, 2 );
}

结束

相关推荐

过滤_Content、自定义帖子类型和wp_Query

我原以为这将是快速而简单的,但很自然,它会变得更加复杂。我正在编写一个简单的插件,创建一个自定义的帖子类型“Ad”,然后在帖子的底部放置一个随机的广告。所以我创建了我的自定义帖子类型-这很简单。然后我创建了一些广告,我想把随机广告中的特色图片放在帖子的底部。所以我写了一个函数来获取随机广告的特征图像,然后我写了一个函数来过滤内容并将广告放在帖子的底部。以下是我所拥有的:function wpa_choose_ad() { $args = array( \'post