0

I'm building a website and I need to have the Yoast description programmatically added after saving a post (a custom post type in my case).

Now, since I'm using Advanced Custom Fields, and I also need some custom fields populated programmatically, I created a function in functions.php and called it this way:

add_action( 'acf/save_post', 'atc_set_element_intro', 20 );

...so it's fired every time a post is saved. This is the function:

function atc_set_element_intro( $post_id ){
  if( get_post_type( $post_id ) == 'giochi' ){

    // [CUT]
    // Here I generate the strings ($intro and $intro_y) to fill the custom fields with 

    update_field( 'field_5d0be8f40addf', $intro, $post_id );
    update_post_meta( $post_id, '_yoast_wpseo_metadesc', $intro_y );
  } else {
    return;
  } 
}

Now, the "update_field" works perfectly fine, and it adds a value on a custom field of my choice. The "update_post_meta" isn't working, unless I add a die() or wp_die() after it. In that case, I see a blank screen on save, and then checking my post I see that it added the Yoast description I wanted. But of course I can't die() on that function.

I guess there's something after the execution of that function that rewrites the Yoast description. What can I do to prevent that? Thank you.

0

After days of trying I managed to fix it myself.

Instead of using update_post_meta, I just did this:

$_POST[ "yoast_wpseo_metadesc" ] = $intro_y;

It works perfectly.

Hope this can help someone.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.