虽然使用woocommerce_process_product_meta挂钩怎么调试?

时间:2018-01-11 14:51:06

标签: php wordpress woocommerce product hook-woocommerce

我需要在自定义产品类型中存储信息。 我正确创建了表单,并且我使用钩子woocommerce_process_product_meta来保存有关此产品的自定义信息。 在同一个函数中,我正在进行文件上传,就像这样。保存基本信息,但上传不起作用。

add_action( 'woocommerce_process_product_meta', 'save_my_custom_settings' );
function save_my_custom_settings( $post_id ){
echo "test";
//Save options
update_post_meta( $post_id, 'my_custom_option', esc_attr( $_POST[ 'my_custom_option' ] ) );

    /*
    * Upload the file
    */
    if ( $_FILES["my_file"] ) {
        $path_parts = pathinfo( $_FILES["my_file"]["name"] );
        $extension = $path_parts['extension'];
        $stored_file_name = time() . '.' . $extension;

        $storage_dir = dirname( __FILE__ ) . '/downloads';

        $target_file = $storage_dir . '/' . $stored_file_name;

        if ( !move_uploaded_file($_FILES["my_file"]["tmp_name"], $target_file) ) {

            echo "Sorry, there was an error uploading your file.";
        } else echo "File transfer ok";

        /*
         * Store information on the file
        */  
        update_post_meta( $post_id, 'my_file_name', $stored_file_name );
    } else echo "File missing!!";
}

我知道该目录存在且该函数被调用,因为其他选项已正确保存。但是,文件根本没有上传。 我确定自己可以自己调试,问题是我不知道如何显示任何通知,所以我不知道出了什么问题。如您所见,在上面的示例中,我尝试使用“echo”,但我看不到输出。 保存产品时,我可以使用什么来显示通知,所以我知道发生了什么?

2 个答案:

答案 0 :(得分:1)

要在Wordpress中进行调试,您应该首先阅读以下内容:Debugging in Wordpress

  

现在有多种技巧/方法来获取数据。我有时会像你的情况一样使用它:
  例如,您可以使用一些临时元字段来存储当前订单的任何调试数据,使用Wordpress函数update_post_meta()
  然后,您将能够使用get_post_meta()输出相关数据,或直接查看wp_postmeta表中的数据库,以获取临时调试自定义字段键...

答案 1 :(得分:0)

不知道这是否是答案,但你的if语句有$_FILES["my__file"]但其他行有$_FILES["my_file"]所以那里的命名存在差异!