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 ) {
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);
}?>
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 :)