Au cours des dernières années, de nombreux sujets et sujets ont été abordés sur la création d'un type de commentaire personnalisé. Si je comprends bien, c’est possible (car WooCommerce le fait), mais il est recommandé d’utiliser plutôt comment_meta
.
Ma question est la suivante: comment WooCommerce ajoute-t-il le comment_type
sur order_note
à la liste déroulante dans Administration des commentaires?
Un aperçu du code de WooCommerce ne s'avère pas utile. Toute direction est appréciée.
Exemple d'ajout d'un commentaire avec le type de 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;
}
Question précédente: Le projet sur lequel je travaille actuellement serait beaucoup plus facile si je pouvais simplement ajouter un comment_type
en plus de comment_meta
le cas échéant. Ma question est la suivante: où devrais-je chercher un guide/exemple sur la façon de procéder?
Pour répondre à votre première question: "Comment WooCommerce ajoute-t-il le comment_type
de order_note
au menu déroulant dans la section Administration des commentaires?". De 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' );
Bien sûr, vous devez faire le vôtre, pour éviter les conflits, comme ceci:
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;
}
Concernant votre deuxième question précédente: "Où devrais-je chercher un guide/exemple sur la façon de procéder?". À première vue, vous trouverez un très bon exemple dans les fichiers woocommerce.
Par ailleurs, toutes les fonctions dont vous avez besoin sont documentées, par exemple: wp_insert_comment , wp_update_comment et wp_delete_comment . Ce n'est peut-être pas la partie la plus complète du codex, mais les informations importantes sont là, bien sûr, vous pouvez toujours regarder dans la source: wp-includes/comment.php .
D'après ce que vous avez écrit, je suppose que vous connaissez votre chemin avec comment meta
, c'est-à-dire add_comment_meta()
, get_comment_meta()
, update_comment_meta()
et delete_comment_meta()
- vous pouvez également les trouver dans le codex, le fichier source est le même que celui indiqué ci-dessus.
Parce que vous n'avez pas posté de vrai problème à résoudre, je dirais que c'est à peu près tout - bien sûr que ce n'est pas du tout ça, mais cela devrait vous donner un bon aperçu par où commencer.
Vous voudrez peut-être jeter un coup d'œil à la réponse de @ brasofilo à Comment ajouter un filtre dans les "Commentaires" du panneau d'administration? , pour plus d'informations et des informations supplémentaires mots-clés pour vous guider.