@zero
2024-12-28
wordpress评论函数如何完全重写
1. 禁用默认的评论模板
通过创建自定义的评论模板文件来取代默认行为:
<?php
if (comments_open() || get_comments_number()) {
// 使用自定义的评论模板文件
include(locate_template('custom-comments.php'));
}
?>
在此代码中,custom-comments.php
是您的自定义评论模板文件。
2. 创建自定义评论模板文件
在主题目录下新建一个名为 custom-comments.php
的文件,设计您自己的评论显示逻辑和表单。
示例:custom-comments.php
<?php
if (have_comments()) : ?>
<h2 class="comments-title">
<?php
$comment_count = get_comments_number();
printf(
_n('%1$s Comment', '%1$s Comments', $comment_count, 'text-domain'),
number_format_i18n($comment_count)
);
?>
</h2>
<ul class="comment-list">
<?php
wp_list_comments([
'style' => 'ul',
'short_ping' => true,
'avatar_size'=> 50,
]);
?>
</ul>
<?php
if (get_comment_pages_count() > 1 && get_option('page_comments')) :
?>
<nav class="comment-navigation" role="navigation">
<div class="nav-previous"><?php previous_comments_link(__('← Older Comments', 'text-domain')); ?></div>
<div class="nav-next"><?php next_comments_link(__('Newer Comments →', 'text-domain')); ?></div>
</nav>
<?php
endif;
else :
if (comments_open()) :
echo '<p class="no-comments">' . __('Be the first to comment!', 'text-domain') . '</p>';
endif;
endif;
if (comments_open()) :
comment_form();
endif;
?>
3. 完全自定义评论结构
如果您需要完全控制评论的 HTML 输出,可以自定义 wp_list_comments()
的回调函数。
示例:自定义回调函数
<?php
function my_custom_comment($comment, $args, $depth) {
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
<div class="comment-body">
<div class="comment-author vcard">
<?php echo get_avatar($comment, 50); ?>
<?php printf('<cite class="fn">%s</cite>', get_comment_author_link()); ?>
</div>
<div class="comment-meta commentmetadata">
<a href="<?php echo htmlspecialchars(get_comment_link($comment->comment_ID)); ?>">
<?php printf(__('%1$s at %2$s', 'text-domain'), get_comment_date(), get_comment_time()); ?>
</a>
</div>
<?php if ($comment->comment_approved == '0') : ?>
<em class="comment-awaiting-moderation"><?php _e('Your comment is awaiting moderation.', 'text-domain'); ?></em>
<br />
<?php endif; ?>
<div class="comment-text">
<?php comment_text(); ?>
</div>
<div class="reply">
<?php
comment_reply_link(array_merge($args, [
'depth' => $depth,
'max_depth' => $args['max_depth']
]));
?>
</div>
</div>
</li>
<?php
}
然后在 custom-comments.php
中调用:
<?php
wp_list_comments([
'style' => 'ul',
'short_ping' => true,
'callback' => 'my_custom_comment',
]);
?>
4. 移除默认的评论样式
默认情况下,WordPress 会加载自带的评论样式。通过以下代码禁用:
function remove_default_comment_style() {
wp_deregister_style('comment-reply');
}
add_action('wp_enqueue_scripts', 'remove_default_comment_style');
5. 测试和调整
完成上述步骤后,您需要测试评论功能,确保自定义模板在各种情况下(如嵌套评论、分页等)都能正常运行。
相关文章
@zero
2024-12-23
is_single()函数在wordpress中的作用
is_single()函数用于判断当前页面是否是一篇单独的文章页面。这个函数在WordPress中非常有用 […]
还没有评论
您必须 登录 后才能发表评论。