web-dev-qa-db-fra.com

Comment créer une notification sur le frontend en utilisant heartbeat api pour plusieurs types de posts personnalisés

Comment obtenir un hook d'action correct sur publish_posts pour plusieurs types personnalisés?

J'ai un problème suivant, je peux utiliser ce hook pour des posts ou un seul post_type personnalisé, mais je ne connais pas le hook correct pour plusieurs types de posts personnalisés:

// Post publication for posts
add_filter ( 'publish_post', 'notify_published_post' );
function notify_published_post( $post_id ) {

Je voudrais publier à tous même les futurs post_types personnalisés, alors j'aimerais obtenir quelque chose comme ceci:

// Post publication hook for all custom posts
add_filter ( 'publish_anypost', 'notify_published_post' );
function notify_published_post( $post_id ) {
3
Daniel Foltynek

Je pense que vous pouvez y arriver en:

1.déterminez les types de publication personnalisés à l’aide de get_post_types() fx

Il retourne une liste de noms d'articles ou d'objets en fonction du paramètre que vous transmettez.

<?php
$args = array(
  'public'   => true,
  '_builtin' => false
); //pass parameter to array according to get all custom post types( parameter pass for demo only.modify it to get desire result)
$post_types=get_post_types($args,'names');

?>

2.ajouter une action au type de publication personnalisé lors de la publication

<?php
foreach($post_types as $post_type){
  add_action( 'publish_'.$post_type, 'ravs_notify_published_post' );
}
function ravs_notify_published_post( $post_id ) {
 $post = get_post( $post_id );
 // Here's the magic
 Wp_Heartbeat_Notify::notify( array(
    'title'     =>      'New Post by ' . $post->post_author,
    'content'   =>      'There\'s a new post publish, why don\'t you <a href="' .get_permalink($post_id). '">give it</a> a look?',
    'type'      =>      'info'
  ));
}
?>

Mise à jour

Créer un plugin pour afficher les notifications en temps réel WP-Realtime-Notify

Modifier

Collez ce code dans functions.php. Il imprimera le tableau du nom de l'article personnalisé types.goto get_post_types et affichera tous les paramètres parameters.pass corrects qui vous donnent la sortie requise (changez $args) .si vous obtenez un tableau correct du nom de types de publication personnalisés pour $args requis, modifiez-le avec mon plugin $ args in.

<?php
add_action('the_content','ravs_customPostList');
function ravs_customPostList(){
$args = array(
  'public'   => true,
);
$post_types = get_post_types($args,'names'); //get names of post types
print_r($post_types);
}?>
2
Ravinder Kumar

Comme je l'ai écrit sur la doc, ce plugin a été complètement testé sur WordPress 3.6-beta3 à la fois sur localhost et en ligne, mais je ne suis pas sûr de savoir comment cela fonctionnerait plus tard avec RC.

Dès que la version 3.6 sortira, je le vérifierai. À des fins de test, je vous suggère de télécharger la version 3 ici: http://wordpress.org/wordpress-3.6-beta3.Zip

N'oubliez pas que pour voir la notification en temps réel, vous devez ouvrir deux navigateurs car les événements ne sont évidemment pas montrés à l'utilisateur qui les a déclenchés.

J'espère que cela peut aider :)

1
MiCc83