使用作者名字自动生成文章标题



我使用高级自定义字段和自定义帖子类型ui,我需要生成一个带有作者姓名的帖子名称,但这只是打印"Solicitud",似乎我的变量$autor没有值,是否有任何方法可以解决这个问题?

function my_pre_save_post( $post_id ) {
    $post2 = get_post($post_id);
    $autor=$post2->author;
    // Create a new post
    $post = array(
        'post_status'  => 'publish',
        'post_title'  => 'Solicitud' . $autor,
        'post_type'  => 'solicit',
    );
    // insert the post
    $post_id = wp_insert_post( $post );
    // update $_POST['return']
    $_POST['return'] = add_query_arg( array('post_id' => $post_id), $_POST['return'] );
    // return the new ID
    return $post_id;
}
add_filter('acf/pre_save_post' , 'my_pre_save_post' );



并且,这是我用来创建表单的代码,我使用acf_form:

$current_inv = $_GET['invid'];
/**
 * Template Name: Solicit
 */

acf_form_head(); 
get_header(); 
?>
    <div id="primary">
        <div id="content" role="main">

            <?php while ( have_posts() ) : the_post(); ?>
                <?php acf_form(array(
                    'post_id'   => 'new',
                    'field_groups'  => array( 243 ),
                    'submit_value'  => 'Crear el ticket'
                )); ?>
            <?php endwhile; ?>
        </div><!-- #content -->
    </div><!-- #primary -->
<?php get_footer(); ?>

尝试使用'post_author'代替'author'。还要确保在开发时将WP_Debug设置为TRUE。

这是一个长版本

function my_pre_save_post( $post_id ) {
    // check if this is to be a new post
    if( $post_id != 'new' )
    {
        return $post_id;
    }
    // Create a new post
    $post = array(
        'post_status'  => 'publish',
        'post_title'  => 'Solicitud',
        'post_type'  => 'solicit',
    );
    // insert the post
    $post_id = wp_insert_post( $post );
    // Once we save, retrieve the original post so we can take the post_author
    $post2 = get_post($post_id);
    // Use post_author
    $autor = $post2->post_author;
    // Update the post with the new title
    wp_update_post(array('ID' => $post_id, $post2->post_title . $autor));
    // update $_POST['return']
    $_POST['return'] = add_query_arg( array('post_id' => $post_id), $_POST['return'] );
    // return the new ID
    return $post_id;
}
add_filter('acf/pre_save_post' , 'my_pre_save_post' );

略短的版本,使用当前登录用户的用户名。

function my_pre_save_post( $post_id ) {
    // check if this is to be a new post
    if( $post_id != 'new' )
    {
        return $post_id;
    }
    $current_user = wp_get_current_user();
    $author = $current_user->user_login; // OR [user_firstname, user_lastname, display_name]
    // Create a new post
    $post = array(
        'post_status'  => 'publish',
        'post_title'  => 'Solicitud' . $author,
        'post_type'  => 'solicit',
    );
    // insert the post
    $post_id = wp_insert_post( $post );    
    // update $_POST['return']
    $_POST['return'] = add_query_arg( array('post_id' => $post_id), $_POST['return'] );
    // return the new ID
    return $post_id;
}
add_filter('acf/pre_save_post' , 'my_pre_save_post' );

引用:

  • http://codex.wordpress.org/Class_Reference/WP_Post
  • http://www.advancedcustomfields.com/resources/tutorials/using-acf_form-to-create-a-new-post/
  • http://codex.wordpress.org/Function_Reference/wp_get_current_user

最新更新