wp_allow_comment()


WordPressのwp_allow_comment()関数は、特定のコメントが許可されるべきかを判定するために使用されます。

構文

wp_allow_comment( array $commentdata );

引数の説明:

  • $commentdata (array) — コメントの詳細情報を含む連想配列。以下のキーを含みます:
    • comment_author — コメント投稿者の名前。
    • comment_author_email — コメント投稿者のメールアドレス。
    • comment_author_url — コメント投稿者のURL。
    • comment_content — コメントの本文。
    • user_ID — コメント投稿者のユーザーID(ログインしている場合)。
    • comment_post_ID — コメントが関連する投稿のID。

例1: コメント許可のチェック

<?php
$commentdata = array(
    'comment_author' => '山田太郎',
    'comment_author_email' => 'example@example.com',
    'comment_author_url' => 'https://example.com',
    'comment_content' => 'これはテストコメントです。',
    'user_ID' => 0,
    'comment_post_ID' => get_the_ID()
);
if ( wp_allow_comment( $commentdata ) ) {
    echo 'コメントは許可されています。';
} else {
    echo 'コメントは拒否されました。';
}
?>

例2: コメントデータをフィルタリングしてチェック

<?php
$commentdata = apply_filters( 'preprocess_comment', array(
    'comment_author' => '佐藤花子',
    'comment_author_email' => 'test@example.com',
    'comment_content' => '不適切なコメントは含まれていません。',
    'comment_post_ID' => get_the_ID()
) );
if ( wp_allow_comment( $commentdata ) ) {
    echo 'コメントが承認されました。';
}
?>

例3: 投稿ごとのコメント制限

<?php
$commentdata = array(
    'comment_post_ID' => get_the_ID(),
    'comment_content' => '制限付きコメント。'
);
if ( get_post_meta( $commentdata['comment_post_ID'], '_allow_comments', true ) && wp_allow_comment( $commentdata ) ) {
    echo 'コメントが許可されています。';
} else {
    echo 'コメントは許可されていません。';
}
?>

例4: 管理者コメントの即時許可

<?php
$commentdata = array(
    'user_ID' => get_current_user_id(),
    'comment_post_ID' => get_the_ID(),
    'comment_content' => '管理者のコメントです。'
);
if ( current_user_can( 'administrator' ) && wp_allow_comment( $commentdata ) ) {
    echo 'コメントが即時許可されました。';
}
?>

例5: フィルターを追加してカスタム許可ルールを実装

<?php
add_filter( 'preprocess_comment', function( $commentdata ) {
    if ( strpos( $commentdata['comment_content'], '禁止ワード' ) !== false ) {
        wp_die( 'コメントに禁止ワードが含まれています。' );
    }
    return $commentdata;
});
$commentdata = array(
    'comment_content' => '禁止ワードなし。'
);
if ( wp_allow_comment( $commentdata ) ) {
    echo 'コメントが承認されました。';
}
?>

注意事項

  • この関数を使用する際には、commentdata配列のキーが正しく設定されていることを確認してください。
  • カスタムフィルターやバリデーションルールを追加する場合、パフォーマンスへの影響を考慮してください。

関連機能: