私のカスタムダッシュボードで、私は新しいコメントの総数を表示したい(どういうわけか "今"のように)。まるで「あなたが…世話をするために開いているコメント」を持っているように。だから私が欲しいのは、各投稿のリストではなく合計数だけです。
しかし、私はこれを正しくすることはできません。何か助けがありますか?
それまでの間、私はこれに関するいくつかの情報(wpmudevから)を得ました。
これはあなたが思うよりも基本的ではありません。
必要がある:
- 新しいメタボックスをWP adminに登録します
- 現在ログインしているユーザーが最後にアクセスしてからの新しいコメントの総数についてデータベースを照会します。
- 訪問タイムアウトを設定します(そのため、ページを変更してもすぐに0に設定されるわけではないため、イライラすることになります)
- 表示をきれいにするためにCSSを書く
- あなたは "今すぐ"ウィジェットであなたがWordPressコアを調べるなら何をするべきかについてのヒントを見つけるでしょう、しかしそれはおそらくあなたの頭の上になるでしょう。
その時点で、あなたはそれをプラグインとして公開することもできます。それは可能であり、プラグインに関してはほとんど中間的ではありませんが、それでもこのフォーラムでは非常に高度なものです。
@toschoに感謝します。モデレートを待っているコメントの数を示しています。それはあなたがそれを表示させたい場所に配置することができます。
<?php
function t5_count_new_comments()
{
global $wpdb;
// last user access
$last_access = get_user_meta( get_current_user_id(), 'last_access', TRUE );
// comment query
$where = $wpdb->prepare( "WHERE comment_date > %s AND comment_approved='0'", $last_access );
$comment_query = $wpdb->get_results(
"SELECT comment_ID,
COUNT( comment_ID ) AS new_comments
FROM {$wpdb->comments} $where",
OBJECT
);
if ( ! isset ( $comment_query[0]->new_comments ) )
return 0;
return $comment_query[0]->new_comments;
}
$new_comments = t5_count_new_comments();
echo "There are $new_comments new comments.";
?>
実際、それほど難しいことではありません。
get_user_meta( get_current_user_id(), 'last_access', TRUE )
です。comment_date
列にあります。>
と比較することができます。right_now_discussion_table_end
。ファイルwp-admin/includes/dashboard.php
を参照してください。それではそれを固執しましょう:
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: T5 New Comments In Right Now Dashboard
* Description: Show the number of new comments on the Right Now dashboard
* Plugin URI:
* Version: 2013.03.16
* Author: Thomas Scholz
* Author URI: http://toscho.de
* Licence: MIT
* License URI: http://opensource.org/licenses/MIT
*/
add_action( 'right_now_discussion_table_end', 't5_new_comments_right_now' );
function t5_new_comments_right_now()
{
global $wpdb;
// last user access
$last_access = get_user_meta( get_current_user_id(), 'last_access', TRUE );
// comment query
$where = $wpdb->prepare( "WHERE comment_date > %s", $last_access );
$comment_query = $wpdb->get_results(
"SELECT comment_ID,
COUNT( comment_ID ) AS new_comments
FROM {$wpdb->comments} $where",
OBJECT
);
// default values
$num = 0;
$text = _x(
'New comments',
'no new comments on dashboard right now',
'plugin_t5_new_comments'
);
// overwrite default values
if ( isset ( $comment_query[0]->new_comments ) ) {
$num = $comment_query[0]->new_comments;
$text = _n( 'New comment', 'New comments', $num, 'plugin_t5_new_comments' );
}
// prepare for display
$num = number_format_i18n( $num );
$num = "<a href='edit-comments.php'><span class='total-count'>$num</span></a>";
$text = "<a href='edit-comments.php'>$text</a>";
// display extra column
printf(
'<tr>
<td class="b b-comments">%1$s</td>
<td class="last t comments">%2$s</td>
</tr>',
$num,
$text
);
}
結果:
あなたのコメントに応えて:新しいコメントの数だけを整数にするには、次のようにします。
function t5_count_new_comments()
{
global $wpdb;
// last user access
$last_access = get_user_meta( get_current_user_id(), 'last_access', TRUE );
// comment query
$where = $wpdb->prepare( "WHERE comment_date > %s", $last_access );
// to get unapproved comments only use this instead:
// $where = $wpdb->prepare( "WHERE comment_date > %s AND comment_approved='0'", $last_access );
$comment_query = $wpdb->get_results(
"SELECT comment_ID,
COUNT( comment_ID ) AS new_comments
FROM {$wpdb->comments} $where",
OBJECT
);
if ( ! isset ( $comment_query[0]->new_comments ) )
return 0;
return $comment_query[0]->new_comments;
}
今すぐあなたのカスタムコードでその関数を使用することができます。
$new_comments = t5_count_new_comments();
echo "There are $new_comments new comments.";