我想在admin(帖子编辑)页面中获取帖子ID,以便我可以使用它来创建自定义上传路径。我在functions.php中使用的以下代码
function my_acf_upload_prefilter( $errors, $file, $field ) {
// only allow admin
if( !current_user_can('manage_options') ) {
// this returns value to the wp uploader UI
// if you remove the ! you can see the returned values
$errors[] = 'test prefilter';
$errors[] = print_r($_FILES,true);
$errors[] = $_FILES['async-upload']['name'] ;
}
//this filter changes directory just for item being uploaded
add_filter('upload_dir', 'my_upload_directory');
// return
return $errors;
}
add_filter('acf/upload_prefilter/name=images', 'my_acf_upload_prefilter');
add_filter('acf/upload_prefilter/name=frg_graph1', 'my_acf_upload_prefilter');
function my_upload_directory( $param ){
$local_dir = "/images";
$mydir = $local_dir;
$param['path'] = $param['basedir'] . $mydir;
$param['url'] = $param['baseurl'] . $mydir;
// if you need a different location you can try one of these values
/*
error_log("path={$param['path']}");
error_log("url={$param['url']}");
error_log("subdir={$param['subdir']}");
error_log("basedir={$param['basedir']}");
error_log("baseurl={$param['baseurl']}");
error_log("error={$param['error']}");
*/
return $param;
}
这是我用来为acf(高级自定义字段)文件设置自定义上传路径的代码。但是我要实现的是:动态路径而不是/ images。 。 通过将$ local_dir变量设置为当前帖子ID(我当前正在编辑的帖子)
以便文件上传到wp-content / uploads / id / file.jpg。
我尝试了全局$ post,但是返回NULL,get_current_screen()似乎未定义。
这有效:
function getpostid() {
global $post;
$id = $post->ID;
var_dump($id)
}
add_action('admin_head', 'getpageid' );
但是只能使用钩子'admin_head'并且变量$ id在任何地方都无法访问:(
。 请帮助
答案 0 :(得分:0)
您可以使用
$post_id = $_GET['post'];
或者您可以使用钩子(可能更好)。
function id_get_custom() {
global $post;
$id = $post->ID;
// do something
}
add_action( 'admin_notices', 'id_get_custom' );
您将需要添加条件,因为它将在所有管理页面上运行,我建议使用get_current_screen();
例如仅在页面上运行:
function id_get_custom() {
global $my_admin_page;
$screen = get_current_screen();
if ( is_admin() && ($screen->id == 'page') ) {
global $post;
$id = $post->ID;
var_dump($id);
}
}
add_action( 'admin_notices', 'id_get_custom' );