Support » Plugins » Hacks » Auto generate post title – how to include different post meta

  • Resolved perthmetro

    (@perthmetro)


    I have the following snippet that allows me to auto generate the post title. I’d like to change the $post_type of the 'post_title' => $post_type . ' Job #' . $post_id to some other post meta like post date and post author.

    Thanks heaps.

    function save_post_func_2134( $post_id ) {
        $post_type = 'post'; //Change your post_type here
        if ( $post_type == get_post_type ( $post_id ) ) {  //Check and update for the specific $post_type
            $my_post = array(
                'ID'           => $post_id,
                'post_title' => $post_type . ' Job #' . $post_id //Construct post_title
            );
             remove_action('save_post', 'save_post_func_2134'); //Avoid the infinite loop
            // Update the post into the database
            wp_update_post( $my_post );
        }
    }
    add_action( 'save_post', 'save_post_func_2134' );
Viewing 2 replies - 1 through 2 (of 2 total)
  • Howdy @perthmetro,

    You can access the post object by adding $currentPost = get_post( $post_id );

    Now that you have access to the post object, you can then change that $post_type in your post_title to something like $currentPost->post_date for the date. See https://codex.wordpress.org/Function_Reference/$post#Properties

    this works..

    add_action( 'save_post', 'wpse_214927_alter_title', 10, 2 );
    function wpse_214927_alter_title ( $post_id, $post_object )
    {
        // Remove the current action
        remove_action( current_filter(), __FUNCTION__ );
    
        $post_date      = $post_object->post_date;
        $format_date    = DateTime::createFromFormat( 'Y-m-d H:i:s', $post_date );
        $date_formatted = $format_date->format( 'Y-m-d' ); // Set correct to display here
        $post_author    = $post_object->post_author;
        $author_name    = get_the_author_meta( 'display_name', $post_author ); // Adjust as needed
    
        $my_post = [
            'ID' => $post_id,
            'post_title' => $author_name . ' Job ' . $date_formatted // Change as needed
        ];
        wp_update_post( $my_post );
    }
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Auto generate post title – how to include different post meta’ is closed to new replies.