PHP中的删除和重命名



我正在使用一个带有JS上传字段的html表单来更新网站徽标。

我正在尝试:

  1. 使用表单上传新徽标
  2. 删除旧徽标以释放名称
  3. 重命名上传的徽标,使其按照HTML呈现(Light_logo_Nav(

到目前为止,我有以下内容,但它不起作用:

if ( isset( $_POST['Edit_Business_Details'] ) && '1' === $_POST['Edit_Business_Details']){
$URLcheck='https';
$New_Light_Logo_Nav = $_POST['light_logo_nav'];
$Light_Logo_Nav_Directory_Name = ABSPATH . "wp-content/uploads/Light_Logo_Nav";
{ 
if(strpos($New_Light_Logo_Nav, $URLcheck) !== false){
unlink($Light_Logo_Nav_Directory_Name);
rename($New_Light_Logo_Nav , $Light_Logo_Nav_Directory_Name);
}}}

提交表单后,文件将已上载到基本目录,$_POST['light_logo_nav']将包含以下格式的文件路径:https://example.com/wp-content/uploads/Light_Logo_Nav.png

感谢所有发表评论的人,你们的评论为我指明了正确的方向。

问题是格式https://example..未被接受删除,我收到错误unlink((:http不允许取消链接

我创建的解决方案是将名称保存在自定义字段中,然后使用ABSPATH,下面的脚本显示了我如何过滤URL以获得文件名,然后将其插入ABSPATH

if ( isset( $_POST['Edit_Business_Details'] ) && '1' == $_POST['Edit_Business_Details']){
$URLcheck='https';
$New_Light_Logo_Nav = $_POST['light_logo_nav'];
$light_logo_nav= get_post_meta( 10416, 'light_logo_nav' );
$light_logo_nav_del=$light_logo_nav[0];
$disallowed = array('http://example.com/wp-content/uploads/', 'https://example.com/wp-content/uploads/');
$Updated_Light_Logo_Nav = array

(
'light_logo_nav'    => $New_Light_Logo_Nav,
);
if(strpos($New_Light_Logo_Nav, $URLcheck) !== false){
foreach($disallowed as $d) {
if(strpos($light_logo_nav_del, $d) === 0) {
$delete_existing_light_logo_nav=str_replace($d, '', $light_logo_nav_del);
wp_delete_file(ABSPATH . '/wp-content/uploads/'.$delete_existing_light_logo_nav);
}
}
wp_update_post(array(
'ID'        => 10416,
'meta_input'=> $Updated_Light_Logo_Nav));
}
}

这是有效的,我不需要重命名,因为我正在动态请求HTML中的自定义字段。

最新更新