web-dev-qa-db-fra.com

Comment puis-je exécuter ce code une fois pour que le titre de mon article généré ne continue pas à changer lors de la publication/mise à jour?

J'ai un type de message personnalisé appelé transaction et, dans l'écran de modification/publication du type de message, j'ai supprimé le champ du titre du message. Le titre de l'article est maintenant généré par la fonction ci-dessous, qui étiquette chaque article Transaction suivi d'une chaîne unique, grâce à la fonction uniqid PHP.

J'utilise cette fonction sur le filtre title_save_pre, mais chaque fois que je mets à jour la publication, un nouveau numéro unique est généré pour le titre.

Comment modifier le code ci-dessous afin que le numéro unique du titre ne soit généré qu'une seule fois?

function transaction_title( $title ) {

  $screen = get_current_screen();
  $transaction_number = uniqid(); // unique number

  if ( 'transaction' == $screen->post_type ) {
     return 'Transaction '. $transaction_number;
  } else {
    return $title; // else return the normal title
  }
}
add_filter( 'title_save_pre', 'transaction_title');

Mon objectif initial est de définir un indicateur de méta de publication comme celui-ci , mais je ne parviens pas à le combiner avec ma fonction. Il semble que le méta de publication ne soit mis à jour que lorsque j'utilise l'action transition_post_status et non avec mon filtre title_save_pre (dont j'ai besoin de changer le titre).

1
Andrew
function transaction_title( $title )
{


    if ( 'transaction' == get_current_screen()->post_type && '' == $title )
    {
        return 'Transaction '.uniqid();
    }
    // else return the normal title
    else 
    {
        return $title;
    }
}
add_filter( 'title_save_pre', 'transaction_title' );
1
kaiser

Avez-vous essayé d'utiliser wp_insert_post_data () ? Cette question peut également vous aider.

0
RRikesh