简体   繁体   中英

Wordpress comment_text() missing <p> tags

I'm creating my own WordPress Bootstrap theme and have run in to a strange issue.

When I submit a comment and it's waiting for moderation, comment_text() does not output any <p> tags.

I've tried disabling all the plugins and renaming my functions.php file and the issue persists.

My code:

<div class="comment-content my-4"><?php comment_text(); ?></div>

Approved comment ( has <p> tags ):

<div id="comment-10" class="comment even thread-even depth-1  media">
<div class="d-flex mt-2 p-2 border rounded">
<div class="flex-grow-1 ms-3">
<div class="author">Barry says</div>
<div class="small"><a href="https://example.com/test/#comment-10" class="text-decoration-none">September 11, 2022 at 8:06 am</a></div>
<div class="comment-content my-4"><p>Testing to see how this comment looks</p></div>

Waiting for moderation ( no <p> tags ):

<div id="comment-59" class="comment even thread-even depth-1  media">
<div class="d-flex mt-2 p-2 border rounded">
<div class="flex-grow-1 ms-3">
<div class="author">Dave says</div>
<div class="small"><a href="https://example.com/test/#comment-59" class="text-decoration-none">October 5, 2022 at 8:14 pm</a></div>
<p class="card-text comment-awaiting-moderation label label-info text-muted">Your comment is awaiting moderation.</p>
<div class="comment-content my-4">ok how does this look</div>

Also, when I enable the subscribe to comments reloaded plugin, the comment looks like this:

<div id="comment-63" class="comment even thread-even depth-1  media">
<div class="d-flex mt-2 p-2 border rounded">
<div class="flex-grow-1 ms-3">
<div class="author">Ken says</div>
<div class="small"><a href="https://example.com/test/#comment-63" class="text-decoration-none">October 5, 2022 at 8:45 pm</a></div>
<p class="card-text comment-awaiting-moderation label label-info text-muted">Your comment is awaiting moderation.</p>
<div class="comment-content my-4">Check your email to confirm your subscription.
Ok this doesn't look right
</div>

Looking at the source code for the plugin, they also add <p> tags for their message, but those are getting removed as well.

I'm at a loss to what the issue could be. Any suggestions?

I finally found the solution to the problem.

The WordPress function wp_kses in Walker_Comment::filter_comment_text() strips all <p> tags by default ( <p> tag is not listed in the "$allowedtags" array).

https://github.com/WordPress/wordpress-develop/blob/6.0.2/src/wp-includes/kses.php#L379-L413

To solve this issue, I only wanted to allow <p> tags in comments so I added the following function inside my Bootstrap_Comment_Walker extends Walker_Comment class:

public function filter_comment_text( $comment_text, $comment )
{
    $allowedtags = array(
            'p' => array(),
    );
    return wp_kses( $comment_text, $allowedtags );
}

Everything is working as expected now.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM