投稿やコメントを追加/編集する権限を持っているユーザーのために簡単なコメント管理リンクを追加する方法を知っている人はいますか? (承認/承認解除/編集/スパム/ゴミ箱)。 注:私のcomments.php私は<?php wp_list_comments(); ?>
でループを呼び出します
デフォルトでは、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のスクリーンショット(スタイルシートによって順序が逆になっています):
これが私が使用しているものです(参照として追加 - 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>';
} ?>
ほとんどのテーマには既に「編集」リンクが付いているので、それを含めませんでした。
プレビュー例: