@lotsamottsa,
There are four filters in Subscribe2 that you’d need to use to achieve (1). The filters are called:
s2_send_plain_excerpt_suscribers
s2_send_plain_fullcontent_suscribers
s2_send_html_excerpt_suscribers
s2_send_html_fullcontent_suscribers
Each of these filters passes 2 arguments. The first is an array of recipient email addresses and the second if the post ID number. You would need to write a filter function that checked the post id to see if it’s in your ‘jobs’ type and then remove any general users from the array of recipients. I would probably do this unsung the array_intersect() function in PHP passing the Subscribe2 list along with a list of managers and admins as additional arguments.
(2) is not possible in Subscribe2 as it works for posts only, not comments. You need to look for a comment notification plugin for that, perhaps Subscribe to Comments Reloaded.
Thanks Mattyrob,
Sorry, but my php skills are not very advanced, so I’m not familiar with some of the terminology you are using, but I did a little bit of research to try and figure this out… is this close to the template I would use to accomplish this?
function remove_jobs_email($args){
$args = array(
// customer post type is jobs
//user is general
);
}
add_filter(s2_send_plain_excerpt_suscribers, remove_jobs_email);
add_filter(s2_send_plain_fullcontent_suscribers, remove_jobs_email);
add_filter(s2_send_html_excerpt_suscribers, remove_jobs_email);
add_filter(s2_send_html_fullcontent_suscribers, remove_jobs_email);
@lotsamottsa,
It’s a good start but your function can take 2 variables, the first is an array of subscribers and the second is the post ID. You might find the example on the API page useful:
http://subscribe2.wordpress.com/support/api/
Ok, so that definitely helped, but I’m getting some error messages when publishing the post, so I’m not sure what I have wrong here: My “general” user role is the role I am trying to remove from receiving emails when a the post type job is published. This role only has the ability to “read” and read private pages, so I am guessing that is level 0?
The error seems to be happening with the second part of my function: The errors messages are:
1. in_array() expects parameter 2 to be array, string
2. array_intersect() [function.array-intersect]: Argument #2 is not an array
function s2member_filter($subscribers, $post_id) {
// $subscribers is an array of subscriber email addresses
$args = array(
'role' => 's2member_level0',
'fields' => array('user_email')
);
$s2_level1 = get_users($args);
foreach ($s2_level1 as $user) {
$s2members[] = $user->user_email;
}
// we can do thins with the $postid also
// like amend the subscribers list of the post id is in a specific category
$posttype = get_post_type( $post_id );
if ( in_array('jobs', $posttype) ) {
//DOES ANYTHING NEED TO GO IN HERE?
}
$filtered_subscribers = array_intersect($subscribers, $s2members);
} // end s2member_filter()
add_filter('s2_send_plain_excerpt_suscribers', 's2member_filter', 10, 2);
add_filter('s2_send_plain_fullcontent_suscribers', 's2member_filter', 10, 2);
add_filter('s2_send_html_excerpt_suscribers', 's2member_filter', 10, 2);
add_filter('s2_send_html_fullcontent_suscribers', 's2member_filter', 10, 2);
@lotsamottsa,
This role only has the ability to “read” and read private pages, so I am guessing that is level 0?
You can’t guess, you need to delve into the database or look in your role management plugin and find a way to collect those users. I suspect your errors are arising as you are not getting any user data from the WordPress tables.
Thanks Mattyrob. I ended up getting this to work without using the plugin. You’ve definitely helped me understand some things though, and steered me in the right direction. Thank you for your time.
@lotsamottsa,
You are welcome – I’m glad you got things working.