it-swarm.com.de

Wie zeigt WooCommerce einen benutzerdefinierten comment_type in Comment Admin an?

In den letzten Jahren gab es viele Themen und Themen zum Erstellen eines benutzerdefinierten Kommentartyps. Ich verstehe größtenteils, dass dies möglich ist (weil WooCommerce dies tut), empfehle jedoch, stattdessen comment_meta zu verwenden.

Meine Frage ist, wie WooCommerce den comment_type von order_note der Dropdown-Liste in der Kommentarverwaltung hinzufügt.

Ein Regrex des WooCommerce-Codes ergibt nichts Hilfreiches. Jede Richtung wird geschätzt.

Beispiel für das Hinzufügen eines Kommentars mit dem Typ 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;
}

Vorherige Frage: Das Projekt, an dem ich gerade arbeite, wäre sehr viel einfacher, wenn ich nur einen comment_type zusätzlich zu comment_meta hinzufügen könnte, wo dies angebracht ist. Meine Frage ist, wo soll ich nach einer Anleitung/einem Beispiel dafür suchen?

1
torinagrippa

So beantworten Sie Ihre erste Frage: "Wie fügt WooCommerce den comment_type von order_note zur Dropdown-Liste in der Kommentarverwaltung hinzu?". Von 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' );

Natürlich muss man sein eigenes machen, um Konflikte zu vermeiden:

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;
}



Bezüglich Ihrer zweiten, vorherigen Frage: "Wo soll ich nach einem Leitfaden/Beispiel dafür suchen?". So wie es aussieht, können Sie ein ziemlich gutes Beispiel aus den Woocommerce-Dateien ziehen.

Außerdem sind alle von Ihnen benötigten Funktionen dokumentiert, zum Beispiel: wp_insert_comment , wp_update_comment und wp_delete_comment . Es ist vielleicht nicht der umfassendste Teil des Codex, aber die wichtigen Informationen sind vorhanden. Natürlich können Sie immer in der Quelle nachsehen: wp-includes/comment.php .

Nach dem, was Sie geschrieben haben, gehen wir davon aus, dass Sie sich mit comment meta auskennen, d. H. Mit add_comment_meta(), get_comment_meta(), update_comment_meta() und delete_comment_meta() - Sie finden diese auch im Codex. Die Quelldatei ist dieselbe wie oben verlinkt.

Da Sie noch kein echtes Problem zu lösen haben, würde ich sagen, dass es nur darum geht - natürlich ist es das überhaupt nicht, aber dies sollte Ihnen einen guten Überblick darüber verschaffen, wo Sie anfangen sollen.

Vielleicht möchten Sie die Antwort von @brasofilo auf Wie füge ich Filter in "Kommentare" im Admin-Bereich hinzu, um weitere Informationen und einige zusätzliche Informationen zu erhalten Schlüsselwörter, die Sie leiten.

5
Nicolai