How can I get correct action hook on publish_posts for multiple custom types ?
I have a following problem, I can use this hook for posts or single custom post_type, but I don’t know correct hook for multiple custom post types:
// Post publication for posts
add_filter ( 'publish_post', 'notify_published_post' );
function notify_published_post( $post_id ) {
I would like to publish to all even future custom post_types, so I would like to get something like this:
// Post publication hook for all custom posts
add_filter ( 'publish_anypost', 'notify_published_post' );
function notify_published_post( $post_id ) {
2 Answers
I think you can achieve this by:
1.determine the custom post types by using get_post_types()
fx
It returns a list of post names or objects on basis of parameter you
pass
<?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.add action to custom post type when publish
<?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'
));
}
?>
Updated
Create a plugin to show realtime notifications WP-Realtime-Notify
Edit
Paste this code in functions.php
.It’ll print array of name of custom post types.goto get_post_types and see all parameters.pass correct parameters which gives you required output( change $args
).if you get correct array of name of custom post types for required $args
,change it with my $args in plugin.
<?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);
}?>