You are here:  Home » PHP » 如何在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; ?>