如何在WordPress中将引用与注释分开
如何将Trackbacks与Comments分开并不是新的黑客,但是当WordPress发布2.7版时,他们引入了一个新的翻译评论系统,其中包括线程评论,分页能力等等。但随着这一变化,他们也改变了很多核心文件参数。在本文中,我们将向您展示如何在WordPress中将引用与评论分开。这个hack只适用于2.7+版本,如果你没有使用它,那么你应该从现在开始,因为最近MySQL对旧版本的攻击。
我们在一个WordPress开发者的网站上找到了这个教程Sivel.net
以下是我们将在教程中引用的新循环的示例:
<?php if ( have_comments() ) : ?> <h3 id="comments"><?php comments_number("No Responses", "One Response", "% Responses" );?> to %u201C<?php the_title(); ?>%u201D</h3> <ol class="commentlist"> <?php wp_list_comments(); ?> </ol> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <?php else : // this is displayed if there are no comments so far ?> <?php if ("open" == $post->comment_status) : ?> <!– If comments are open, but there are no comments. –> <?php else : // comments are closed ?> <!– If comments are closed. –> <p class="nocomments">Comments are closed. <?php endif; ?> <?php endif; ?>
在 comments.php %%%中查找此代码%%%:直接在此代码下面添加以下代码:
<?php if ( have_comments() ) : ?>
使用以下代码替换上面的代码:
<?php if ( ! empty($comments_by_type["comment"]) ) : ?> [/php Once you have added the above code then find this code: <?php wp_list_comments(); ?>
现在,如我们在示例循环中看到的那样有序列表的代码看起来像
<?php wp_list_comments("type=comment"); ?>
直接在此代码下面添加:
</ol>
直接在此代码下方添加:
<?php endif; ?>
现在通过添加endif标记,如果您没有任何注释,则不会显示有序列表。现在让我们继续将ping添加到注释中。
在下面添加以下代码,或者您想要显示它。它将显示ping。
<?php if ( ! empty($comments_by_type["pings"]) ) : ?> <h3 id="pings">Trackbacks/Pingbacks</h3> <ol class="commentlist"> <?php wp_list_comments("type=pings"); ?> </ol> <?php endif; ?>
现在,当你拥有它时,它将显示引用,但它将像注释一样显示它们。现在你可能想把它们显示为列表,因为其他明智的你只是在浪费空间。所以这就是你如何做到这一点。
只需打开你的主题文件夹中的 functions.php 并在其中添加以下函数:
<?php function list_pings($comment, $args, $depth) { $GLOBALS["comment"] = $comment; ?> <li id="comment-<?php comment_ID(); ?>"><?php comment_author_link(); ?> <?php } ?>
此功能可让您将ping显示为列表,而不是像注释一样显示。但你必须做更多的事情。
打开你的comments.php并找到这段代码:
<ol> <?php wp_list_comments("type=pings"); ?>
将其替换为:
<ol> <?php wp_list_comments("type=pings&callback=list_pings"); ?>
现在示例循环的最终副本将看看这个:
<?php if ( have_comments() ) : ?> <?php if ( ! empty($comments_by_type["comment"]) ) : ?> <h3 id="comments"><?php comments_number("No Responses", "One Response", "% Responses" );?> to %u201C<?php the_title(); ?>%u201D</h3> <ol class="commentlist"> <?php wp_list_comments("type=comment"); ?> </ol> <?php endif; ?> <?php if ( ! empty($comments_by_type["pings"]) ) : ?> <h3 id="pings">Trackbacks/Pingbacks</h3> <ol class="pinglist"> <?php wp_list_comments("type=pings&callback=list_pings"); ?> </ol> <?php endif; ?> <div class="navigation"> <div class="alignleft"><?php previous_comments_link() ?></div> <div class="alignright"><?php next_comments_link() ?></div> </div> <?php else : // this is displayed if there are no comments so far ?> <?php if ("open" == $post->comment_status) : ?> <!– If comments are open, but there are no comments. –> <?php else : // comments are closed ?> <!– If comments are closed. –> <p class="nocomments">Comments are closed. <?php endif; ?> <?php endif; ?>