WooCommerce如何在评论管理中显示自定义COMMENT_TYPE?

时间:2013-09-16 作者:m-torin

在过去几年中,有许多关于如何创建自定义注释类型的线程和主题。大部分情况下,我认为这是可能的(因为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 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

回答您的第一个问题:»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_commentwp_delete_comment. 这可能不是法典中最全面的部分,但重要的信息就在那里,当然你可以随时查看来源:wp-includes/comment.php.

根据你写的我想你知道你的方式comment meta, i、 e。add_comment_meta(), get_comment_meta(), update_comment_meta()delete_comment_meta() - 你也可以在法典中找到,源文件与上面链接的相同。

因为你还没有发布一个真正需要解决的问题,我想说的就是这个问题——当然,这根本不是问题,但这应该能让你很好地了解从哪里开始。

你可能想看看@brasofilo对How to add filter in “Comments” at the admin panel?, 有关更多信息和一些其他关键字,请参考。

结束

相关推荐

COMMENTS_TEMPLATE在自定义模板文件中不能正常工作

在我用作页面的模板文件中,我希望只允许2个用户发表评论,并允许所有其他用户仅查看这些评论(不允许他们添加评论)。我的模板文件是:<?php get_header(); ?> <?php if (get_current_user_id()==1 or get_current_user_id()==2 ) { comments_template( \'\', true ); } else&