web-dev-qa-db-fra.com

Comment intercepter une publication pour une publication personnalisée de type "événement"

J'essaie d'écrire un plugin qui copie un type d'événement personnalisé "événement" d'un blog à un autre. Le code de copie fonctionne déjà, mais je n'arrive pas à obtenir le hook "add_action" qui fonctionne lorsqu'un événement est publié.

add_action('publish_event', 'copy_event_to_mini_site' );

function copy_event_to_mini_site() {

code in here to copy relevant data from one blog to the other

}

J'ai aussi essayé: add_action('publish_post', 'copy_event_to_mini_site' );

Cela n'a pas fonctionné non plus.

2
Chris

Lire le codex, c'est là que j'ai finalement trouvé la réponse:

https://codex.wordpress.org/Plugin_API/Action_Reference/publish_post

à la fin :

Types de messages personnalisés

Pour déclencher cette action pour un type de publication personnalisé, utilisez publish _ {$ custom_post_type}. par exemple. si votre type de message est 'book', utilisez:

add_action( 'publish_book', 'post_published_notification', 10, 2 );
5
Syndyloo

transition_post_status vous aide à effectuer tous les types de publication et à passer d'un statut à un autre, par exemple en attente de publication. ou nouvelle publication.

Voici la version officielle WordPress Codec Page .

function on_all_status_transitions( $new_status, $old_status, $post )       
{
   if ( $new_status != $old_status ) {
    // A function to perform actions any time any post changes status.
  }
  if ( $new_status != 'publish' ) {
    // A function to perform action when new post published.
  }
}
add_action(  'transition_post_status',  'on_all_status_transitions', 10, 3 );

J'espère que cela aidera universellement tous les types de publication personnalisés et types de publication par défaut.

3
Kvvaradha

s_ha_dum - tu avais raison c'est un crochet approprié - mon mauvais.

J'ai vérifié la table de base de données sur l'autre blog et le message a effectivement été copié - il ne s'affiche pas dans la liste des administrateurs pour les événements sur l'autre site. Je vais donc devoir comprendre pourquoi le message copié ne s'affiche pas dans la liste.

0
Chris
  • {old_status} à {new_status}
  • {status} _ {post_type}

Les statuts de poste disponibles sont:

  • new - Quand il n’ya pas de statut précédent (cela signifie que ces hooks sont toujours exécutés à chaque exécution de "save_post".
  • publier - Un article publié ou une page.
  • en attente - Une publication en attente de révision.
  • brouillon - Un poste en statut brouillon.
  • auto-draft - Un article nouvellement créé sans contenu.
  • future - Un message dont la publication est prévue à l’avenir.
  • private - Invisible pour les utilisateurs qui ne sont pas connectés.
  • inherit - Révision ou pièce jointe (voir get_children ()).
  • corbeille - La publication est à la corbeille (ajoutée avec la version 2.9).

Vous pouvez créer des événements par transitions de statut de publication en fonction de vos besoins.

0
Pravin Work