我需要在自定义产品类型中存储信息。
我正确创建了表单,并且我使用钩子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”,但我看不到输出。 保存产品时,我可以使用什么来显示通知,所以我知道发生了什么?
答案 0 :(得分:1)
要在Wordpress中进行调试,您应该首先阅读以下内容:Debugging in Wordpress。
现在有多种技巧/方法来获取数据。我有时会像你的情况一样使用它:
例如,您可以使用一些临时元字段来存储当前订单的任何调试数据,使用Wordpress函数update_post_meta()
。
然后,您将能够使用get_post_meta()
输出相关数据,或直接查看wp_postmeta
表中的数据库,以获取临时调试自定义字段键...
答案 1 :(得分:0)
不知道这是否是答案,但你的if语句有$_FILES["my__file"]
但其他行有$_FILES["my_file"]
所以那里的命名存在差异!