[wp-hackers] Separate Comments of Custom Post Type
Baki Goxhaj
banago at gmail.com
Sun Aug 8 10:10:37 UTC 2010
I mean Thanks Mike :)
Kindly,
Baki Goxhaj
www.wplancer.com | www.banago.info | www.lintuts.com
On 8 August 2010 12:10, Baki Goxhaj <banago at gmail.com> wrote:
> Paul thanks very much indeed - I'm going to try that now.
>
>
> Kindly,
>
> Baki Goxhaj
> www.wplancer.com | www.banago.info | www.lintuts.com
>
>
> On 7 August 2010 22:12, Paul <paul at codehooligans.com> wrote:
>
>> Freakin Awesome Mike!
>>
>> P-
>>
>> On Aug 7, 2010, at 3:40 PM, Mike Schinkel wrote:
>>
>> > On Aug 7, 2010, at 2:30 PM, Paul wrote:
>> >> So at this point you have a new nav item on your post type menu. The
>> nav item when clicked will call 'product_comments_menu function'. Here is
>> where things get sort of ugly. As far as I can tell there is no easy way to
>> filter the comments by post_type. For example I would expect there to be
>> some method to filter the WHERE clause of the comments query. Nothing. Take
>> a look at the /wp-admin/edit-comments.php code. you will basically want to
>> copy most of this code into your version of 'product_comments_menu'
>> function.
>> >
>> > Actually, the following works (and the code below is packaged as a
>> plugin here: http://gist.github.com/513084):
>> >
>> > add_action('query', 'hook_to_filter_comment_admin_by_post_type');
>> > function hook_to_filter_comment_admin_by_post_type($sql) {
>> > global $pagenow;
>> > if ($pagenow=='edit-comments.php' &&
>> > !empty($_GET['post_type']) &&
>> > post_type_exists($_GET['post_type']) &&
>> > preg_match('#^SELECT \* FROM wp_comments
>> c#',$sql)) {
>> > $sql = str_replace(' WHERE '," WHERE
>> p.post_type='{$_GET['post_type']}' AND ",$sql);
>> > }
>> > return $sql;
>> > }
>> >
>> > Of course modifying the $sql works in most cases but occasionally it
>> conflicts with another hook so while using the above in the short term he
>> could create a trac ticket to lobby for adding post_type filtering into
>> edit-comments.php or at the very least ask for a filter on the return value
>> of _wp_get_comment_list().
>> >
>> > With the above hook Baki can simply pass the "post_type" on the
>> edit-comments.php when setting up his admin menu as you described instead of
>> creating a "product_comments_menu" function like so:
>> >
>> > http://example.com/wp-admin/edit-comments.php?post_type=movie
>> >
>> > Here's the hook to add a "Comments" menu option to each post type's
>> admin menu:
>> >
>> > add_action('admin_menu',
>> 'hook_to_add_comment_admin_menu_option_for_each_post_type');
>> > function hook_to_add_comment_admin_menu_option_for_each_post_type() {
>> > $post_types =
>> apply_filters('comment_admin_menu_post_types',get_post_types(array('public'=>true,'show_ui'=>true)));
>> > foreach($post_types as $post_type) {
>> > if ($post_type!='post') // Don't do for Posts, they
>> already gota one!
>> >
>> add_submenu_page("edit.php?post_type={$post_type}",__('Comments'),__('Comments'),'moderate_comments',"edit-comments.php?post_type={$post_type}"
>> );
>> > }
>> > }
>> >
>> > Note that it adds it's own filter "comment_admin_menu_post_types" so
>> that someone using this can control via the hook in their own theme's
>> function which post types get admin menus for Comments. So if the two
>> post_types you want comments for are "Movie" and "Actor" then this stored in
>> the theme's functions.php file would cause only the menus for those post
>> types to get a Comment option:
>> >
>> > add_action('comment_admin_menu_post_types',
>> 'my_comment_admin_menu_post_types');
>> > function my_comment_admin_menu_post_types($post_types) {
>> > return array('movie','actor');
>> > }
>> >
>> > Again, here it is as a plugin:
>> >
>> > http://gist.github.com/513084
>> >
>> > Hope this helps.
>> >
>> >
>> > -Mike
>> >
>> > _______________________________________________
>> > wp-hackers mailing list
>> > wp-hackers at lists.automattic.com
>> > http://lists.automattic.com/mailman/listinfo/wp-hackers
>>
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>
>
>
More information about the wp-hackers
mailing list