0

I made some changes in comment-template.php, wp-comment-post.php so now I am storing the comments withot attaching with any post or page (I am setting the comment_post_id to 0). But now the problem is When I go on admin panel and see all comments the comments with 0 comment_post_id are not having option of spam , trash , approve etc. how to resolve it?

Actually I want to store comments separately from post or page but with complete functionality as in comments of any post or page like whether logged in or not otherwise fields for name, email etc. and in admin panel options for approval,trash,spam etc..

Can I achieve this with any other plugin that performs same as comment form.

7
  • I don't know if this is workable, but maybe instead of attaching to non-existent id=0, create a post (id=23243 or whatever), and attach all comments to that post. You could even hide the post from the loop. I haven't thought this through too far, but it might be doable.
    – akTed
    Commented Jan 15, 2013 at 8:44
  • @AKTed this will not work too because there is no post with id = 23243 Commented Jan 15, 2013 at 9:07
  • @Bhuvnesh simply create a dummy post and use that post id, if you don't want to exclude the post then create a post type just for that dummy post and make it none public.
    – Bainternet
    Commented Jan 15, 2013 at 9:19
  • @Bainternet I can do this thanx! but it will be more good if I got some other solution instead of using post means is there any plugin or any other way to achieve my question goal. Please help me if you can. Thanks in advance Commented Jan 15, 2013 at 9:28
  • I was trying say create a post and use the id that is automatically assigned to it (id=23243 or whatever) instead of using a non-existent post id=0, but it didn't come out so clear.
    – akTed
    Commented Jan 15, 2013 at 9:52

1 Answer 1

0

I found a way to hijack the comment before it's attached to its post in the DB. Using the snippet below you can attach every comment to your dummy post. Just change COMMENT_ID to the ID of your dummy post. No hacking of core needed!

<?php
add_filter('preprocess_comment', 'akt_hijack_comment');
function akt_hijack_comment($comment) {
    define('AKT_REDIRECT_URL', $comment['comment_post_ID']);
    $comment['comment_post_ID'] = 63;
    return $comment;
}
add_filter('comment_post_redirect', 'akt_redirect');
function akt_redirect($location) {
    return get_permalink(AKT_REDIRECT_URL);
}

A side-effect that I haven't tried fixing yet: after submission of the comment, the user is redirected to the dummy post. Not sure if I'll have time to figure it out tonight.

I edited the code to redirect the user back to the same page that was commented on.

Edit: You can make this into a plugin (add // Plugin Name: SOME_NAME under <?php) or a mu-plugin (paste as into a file and upload it to wp-content/mu-plugins - create mu-plugins directory if needed). Or you can paste into the functions.php of your theme (least desirable method).

7
  • redirestion is easy just use wp_safe_redirect( "index.php" ); in wp-comments-post.php file Commented Jan 15, 2013 at 11:37
  • but where to use the above code which you give me in answer Commented Jan 15, 2013 at 11:39
  • Yeah, but that might throw user off to end up at a different page. Probably better to hook into where it does the redirect, wp-comments-post.php, line 96. Hook into comment_post_redirect.
    – akTed
    Commented Jan 15, 2013 at 11:41
  • @Bhuvnesh I edited the Question with directions.
    – akTed
    Commented Jan 15, 2013 at 11:46
  • 1
    @Bhuvnesh: You seem determined to hack WP core files, but that's not a good idea; there's almost always a more elegant way to do it. I figured out how to redirect correctly. See the updated code.
    – akTed
    Commented Jan 15, 2013 at 12:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.