web-dev-qa-db-ja.com

コメントへのリンクの削除、承認、スパムの追加

投稿やコメントを追加/編集する権限を持っているユーザーのために簡単なコメント管理リンクを追加する方法を知っている人はいますか? (承認/承認解除/編集/スパム/ゴミ箱)。 注:私のcomments.php私は<?php wp_list_comments(); ?>でループを呼び出します

2
Arg Geo

デフォルトでは、wp_list_comments()はクラスWalker_Commentを呼び出します。そのメソッドstart_el()edit_comment_link()を呼び出します、そしてここで私達はあなたの質問のためのフィルタを見つけます:それは'edit_comment_link'と呼ばれ、それは私たちが使うことができる2つの変数、リンクテキストとコメントIDを渡します。

コメントをスパムとしてマークする、または削除するためのURLは次のとおりです。

  • スパムの場合はwp-admin/comment.php?c=1&action=cdc&dt=spam
  • 削除する場合はwp-admin/comment.php?c=1&action=cdc

コメントがゴミ箱に捨てられた後に私たちを投稿に送り返すためにパラメータredirect_to=を追加することができます。

これは私が一緒にハックしたサンプルプラグインです( GitHubアドレス ):

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Comment moderation links
 * Version:     2012.06.04
 * Author:      Thomas Scholz <[email protected]>
 * Author URI:  http://toscho.de
 * License:     MIT
 * License URI: http://www.opensource.org/licenses/mit-license.php
 */

if ( ! function_exists( 't5_comment_mod_links' ) )
{
    add_filter( 'edit_comment_link', 't5_comment_mod_links', 10, 2 );

    /**
     * Adds Spam and Delete links to the Sdit link.
     *
     * @wp-hook edit_comment_link
     * @param   string  $link Edit link markup
     * @param   int $id Comment ID
     * @return  string
     */
    function t5_comment_mod_links( $link, $id )
    {
        $template = ' <a class="comment-edit-link" href="%1$s%2$s">%3$s</a>';
        $admin_url = admin_url( "comment.php?c=$id&action=" );

        // Mark as Spam.
        $link .= sprintf( $template, $admin_url, 'cdc&dt=spam', __( 'Spam' ) );
        // Delete.
        $link .= sprintf( $template, $admin_url, 'cdc', __( 'Delete' ) );

        // Approve or unapprove.
        $comment = get_comment( $id );

        if ( '0' === $comment->comment_approved )
        {
            $link .= sprintf( $template, $admin_url, 'approvecomment', __( 'Approve' ) );
        }
        else
        {
            $link .= sprintf( $template, $admin_url, 'unapprovecomment', __( 'Unapprove' ) );
        }

        return $link;
    }
}

TwentyElevenのスクリーンショット(スタイルシートによって順序が逆になっています):

enter image description here

7
fuxia

これが私が使用しているものです(参照として追加 - toscho's answer IS BETTER)。

<?php if (current_user_can('edit_post')) {
    $id = get_comment_ID();
    echo ' <a href="'.admin_url("comment.php?action=cdc&c=$id").'">[Delete]</a>';
    echo ' <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'">[Spam]</a>';
} ?>

ほとんどのテーマには既に「編集」リンクが付いているので、それを含めませんでした。

プレビュー例:

Delete Spam

1
its_me