WordPressのコメントフォームにおすすめのレイティングやニックネームの項目を追加して保存したい場合、コメントメタを使う方法が簡単ですが、今回はコメント投稿時に “comment_post” というフックを利用してコメントメタを保存する方法を書いていきます。
コメント投稿ににコメントメタを保存する
/**
* コメントカスタマイズ
* product_rating ・・・ おすすめ度
* comment_nickname ・・・ ニックネーム
*/
function ag_save_custom_comment_field($comment_id)
{
if(!$comment = get_comment($comment_id)) return false;
/* product_rating の値の保存 */
$custom_comment_key = 'product_rating';
$custom_comment_val = esc_attr($_POST[$custom_comment_key]);
//コメントメタ取得
$comment_meta = get_comment_meta( $comment_id, $custom_comment_key, true);
if('' == $comment_meta) {
add_comment_meta($comment_id, $custom_comment_key, $custom_comment_val);
} else if($custom_comment_val != $comment_meta) {
update_comment_meta($comment_id, $custom_comment_key, $custom_comment_val);
} else if('' == $custom_comment_val) {
delete_comment_meta($comment_id, $custom_comment_key);
}
/* comment_nickname の値の保存 */
$custom_comment_key = 'comment_nickname';
$custom_comment_val = esc_attr($_POST[$custom_comment_key]);
//コメントメタ取得
$comment_meta = get_comment_meta( $comment_id, $custom_comment_key, true);
if('' == $comment_meta) {
add_comment_meta($comment_id, $custom_comment_key, $custom_comment_val);
} else if($custom_comment_val != $comment_meta) {
update_comment_meta($comment_id, $custom_comment_key, $custom_comment_val);
} else if('' == $custom_comment_val) {
delete_comment_meta($comment_id, $custom_comment_key);
}
return false;
}
add_action('comment_post', 'ag_save_custom_comment_field');
動作環境情報
エックスサーバー(x10) PHP 7.3.16 MySQL 5.7 WordPress 5.4.2
コメント