Php 覆盖wp_唯一文件名
如何将回调参数传递给WordPress函数 wp_unique_filename接受3个参数(Php 覆盖wp_唯一文件名,php,wordpress,Php,Wordpress,如何将回调参数传递给WordPress函数 wp_unique_filename接受3个参数($dir,$filename,和$unique_filename_callback=null)。我一辈子都搞不懂如何传递$unique\u filename\u callback 我已经尝试了add_action和add_filter,每种都是10/3 add_action( 'wp_unique_filename', 'my_unique_filename', 10, 3 ); add_filter(
$dir
,$filename
,和$unique_filename_callback=null
)。我一辈子都搞不懂如何传递$unique\u filename\u callback
我已经尝试了add_action
和add_filter
,每种都是10/3
add_action( 'wp_unique_filename', 'my_unique_filename', 10, 3 );
add_filter( 'wp_unique_filename', 'my_unique_filename', 10, 3 );
然后
function my_unique_filename( $dir, $filename, my_unique_filename_cb ){
}
function my_unique_filename_c(){
}
不管我为这个参数设置了什么,我都会得到一个解析错误,它需要一个变量。我试过:
my_unique_filename_cb
'my_unique_filename_cb'
my_unique_filename_cb()
'my_unique_filename_cb()'
更新
我认为它需要作为重写传递给wp\u handle\u upload
,它接受一个重写数组,提取它,并在函数的后面作为参数传递$unique\u filename\u callback
。在这种情况下,如何将函数作为数组中的参数传递(如果这是解决方案):
wp\u unique\u filename()
检查回调函数是否已指定、是否存在以及是否可调用。传递的参数是$dir
、$name
和$ext
。下面是一个(无用的)例子:
为wp\u handle\u upload()
使用的wp\u unique\u filename()
指定自定义回调(示例):
那么我会用什么钩子来实现我的_unique _filename _函数呢?我尝试了wp_unique_文件名,但它没有启动,所以我无法测试它。谢谢我对你的问题读得不够透彻。您是否试图修改wp_unique_filename在wp核心函数中使用的行为?我希望通过自定义回调来运行我自己的唯一文件名计数器,而不是使用WordPress的默认计数器。原因是,我需要检查另一个目录来运行文件计数增量,而不是WordPress检查上载目录。如果您在函数中直接使用
wp\u unique\u filename()
,您可以做任何您想做的事情。在WP core中,唯一可以为WP_unique_filename()
指定自定义回调的情况是在使用WP_handle_upload()
时,例如WP_handle_upload($files['file'],array('unique_filename_callback'=>'my_unique_filename_callback')代码>我刚刚意识到这一点并更新了问题。我仍然会遇到解析错误:解析错误,在传递函数名时应为'&''或“variable(T_variable)”,就像我所想的那样,而您刚刚注释过的那样。(感谢您的持续帮助!!)
function my_wp_handle_upload( $file, array( 'unique_filename_callback' => myfunction ) ){
//Which would then extract unique_filename_callback to $unique_filename_callback
//and pass it to wp_unique_filename as the third parameter
}
function my_unique_filename_function( $dir = '', $filename = 'bar.exe' )
{
echo wp_unique_filename( $dir, $filename, 'my_unique_filename_callback' );
}
function my_unique_filename_callback( $dir, $name, $ext )
{
return $name . $ext;
}
my_unique_filename_function(); // echoes bar.exe
my_unique_filename_function( '', 'qux.gif' ); // echoes qux.gif
$uploadedfile = $_FILES['file'];
$upload_overrides = array( 'unique_filename_callback' => 'my_unique_filename_callback' );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile ) {
echo "File is valid, and was successfully uploaded.";
var_dump( $movefile);
} else {
echo "Possible file upload attack!";
}