wpDiscuz - WordPress Comment Plugin
Disable main form, ...
 
Share:
Notifications
Clear all

[Solved] Disable main form, only allow reply

8 Posts
2 Users
2 Likes
725 Views
Zoker
Posts: 22
Topic starter
(@zoker)
Eminent Member
Joined: 1 year ago

Hi there,

 

I try to disable the comment field, if the user has already commented on this post. But he should be able to reply to his own comment and other comments.

When I disable the form with this filter ...

function hide_form($output, $commentsCount, $currentUser) {
    return '';
}
add_filter('wpdiscuz_form_render', 'hide_form', 10, 3);

... the form is disabled, but also the reply form. 

Is there any way to do this? 

 

If I have a function to disable the main form, I will surround it with a check if the user has already made a comment. But I first need the form disable filter.

Thanks!

7 Replies
Zoker
Posts: 22
Topic starter
(@zoker)
Eminent Member
Joined: 1 year ago

For everyone interested, here is the code to get if the current user already posted a level 0 comment:

global $post;
$args = array(
    'post_id'    => $post->ID,
    'author__in' => get_current_user_id(),
    'parent' => 0,
    'count' => true
);
$comments_count = get_comments( $args );
6 Replies
Zoker
(@zoker)
Joined: 1 year ago

Eminent Member
Posts: 22

This is not the solution, this is only the wrapper I need for getting, if a user already made a level 0 comment on the post. I still need the function, that removes the main comment form, but not the reply form. 

Asti
 Asti
Support
(@asti)
Joined: 5 years ago

Illustrious Member
Posts: 5160

Hi Zoker,

I'm going to ask the developers if there is a simple solution for this and back to you asap. 

Asti
 Asti
Support
(@asti)
Joined: 5 years ago

Illustrious Member
Posts: 5160

@zoker,

Please try this one: 

function hide_form($output, $commentsCount, $currentUser) {
   global $post;
   $args = array(
      'post_id'    => $post->ID,
      'author__in' => get_current_user_id(),
      'parent' => 0,
      'count' => true
   );
   $comments_count = get_comments( $args );
    if ($comments_count) {
        $output = preg_replace('~<div class="wpd-form[^"\']+wpd-main-form-wrapper[^>]+>.*?(<div id="wpdiscuz_hidden_secondary_form")~is', '$1', $output);
    }
   return $output;
}
add_filter('wpdiscuz_form_render', 'hide_form', 10, 3);

It should work fine. 

Zoker
(@zoker)
Joined: 1 year ago

Eminent Member
Posts: 22

@asti Yes that works, thank you very much! Can you please ask the developers to include a proper filter for that anyway? Would be a cleaner way instead of using a pre_replace with regex (especially if the html changes within a update, then the regex won't work anymore) 🙂

But for now this is perfect, thanks!

Asti
 Asti
Support
(@asti)
Joined: 5 years ago

Illustrious Member
Posts: 5160

Zoker,

I'm really sorry, but this is not planned yet.

We'd really appreciate and be thankful if you leave a good review on plugin page. This is the best way to say thank you to this project and support team.

Zoker
(@zoker)
Joined: 1 year ago

Eminent Member
Posts: 22

@asti Yes, that's why I asked you to create a feature request for this 🙂

Thanks!

Will do, thanks!

Share: