Как WooCommerce отображает пользовательский тип комментария в администраторе комментариев?
За последние несколько лет появилось много тем и тем о том, как создать пользовательский тип комментария. По большей части я понимаю, что это возможно (потому что это делает WooCommerce), но вместо этого рекомендуется использовать comment_meta
.
Мой вопрос в том, как WooCommerce добавляет comment_type
из order_note
в раскрывающийся список в администрировании комментариев?
Повторный просмотр кода WooCommerce не дает ничего полезного. Любое направление - это оцененный.
Пример добавления комментария с типом order_note
:
/**
* Adds a note (comment) to the order
*
* @access public
* @param string $note Note to add
* @param int $is_customer_note (default: 0) Is this a note for the customer?
* @return id Comment ID
*
* *file is class-wp-order.php*
*/
public function add_order_note( $note, $is_customer_note = 0 ) {
$is_customer_note = intval( $is_customer_note );
if ( is_user_logged_in() && current_user_can( 'manage_woocommerce' ) ) {
$user = get_user_by( 'id', get_current_user_id() );
$comment_author = $user->display_name;
$comment_author_email = $user->user_email;
} else {
$comment_author = __( 'WooCommerce', 'woocommerce' );
$comment_author_email = strtolower( __( 'WooCommerce', 'woocommerce' ) ) . '@';
$comment_author_email .= isset( $_SERVER['HTTP_HOST'] ) ? str_replace( 'www.', '', $_SERVER['HTTP_HOST'] ) : 'noreply.com';
$comment_author_email = sanitize_email( $comment_author_email );
}
$comment_post_ID = $this->id;
$comment_author_url = '';
$comment_content = $note;
$comment_agent = 'WooCommerce';
$comment_type = 'order_note';
$comment_parent = 0;
$comment_approved = 1;
$commentdata = apply_filters( 'woocommerce_new_order_note_data', compact( 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_agent', 'comment_type', 'comment_parent', 'comment_approved' ), array( 'order_id' => $this->id, 'is_customer_note' => $is_customer_note ) );
$comment_id = wp_insert_comment( $commentdata );
add_comment_meta( $comment_id, 'is_customer_note', $is_customer_note );
if ( $is_customer_note )
do_action( 'woocommerce_new_customer_note', array( 'order_id' => $this->id, 'customer_note' => $note ) );
return $comment_id;
}
Предыдущий вопрос: Проект, над которым я сейчас работаю, был бы намного, намного проще, если бы я мог просто добавить comment_type
в дополнение к comment_meta
, где это уместно.
Мой вопрос в том, где мне следует искать руководство/пример того, как это сделать?
1 answers
Чтобы ответить на ваш первый вопрос: "Как WooCommerce добавляет comment_type
из order_note
в раскрывающийся список в администрировании комментариев?". От woocommerce-admin-init.php
:
function woocommerce_admin_comment_types_dropdown( $types ) {
$types['order_note'] = __( 'Order notes', 'woocommerce' );
return $types;
}
add_filter( 'admin_comment_types_dropdown', 'woocommerce_admin_comment_types_dropdown' );
Конечно, вы должны делать все сами, чтобы избежать конфликтов, вот так:
add_filter( 'admin_comment_types_dropdown', 'wpse114725_admin_comment_types_dropdown' );
function wpse114725_admin_comment_types_dropdown( $types ) {
//replace the 'your...'-parts as needed
$types['your_note_type'] = __( 'Your Note Type', 'your-text-domain' );
return $types;
}
Что касается вашего второго, предыдущего вопроса: "Где мне следует искать руководство/пример того, как это сделать?". Судя по всему, вы можете получить довольно хороший пример из файлов woocommerce.
Кроме того, что все необходимые вам функции задокументированы, например: wp_insert_comment, wp_update_comment и wp_delete_comment. Возможно, это не самая полная часть кодекса, но важная информация там есть, конечно, вы всегда можете посмотреть в источнике: wp-includes/comment.php .
Из того, что вы написали, я предполагаю, что вы знаете свой путь с comment meta
, т.Е. add_comment_meta()
, get_comment_meta()
, update_comment_meta()
и delete_comment_meta()
- вы также можете найти их в кодексе, исходный файл то же самое, что указано выше.
Поскольку вы не опубликовали реальную проблему, которую нужно решить, я бы сказал, что это примерно так - конечно, это совсем не так, но это должно дать вам хороший обзор, с чего начать.
Возможно, вы захотите взглянуть на ответ @brasofilo на Как добавить фильтр в "Комментарии" на панели администратора?, для получения дополнительной информации и некоторых дополнительных ключевых слов, которые помогут вам.