在你的回答中,你说想要的路径是
wp-content\\uploads\\state-name\\destination\\
在哪里
state-name
是一个分类术语
destination
是一个目标CPT的段塞。从你的问题来看,最后一件事还不清楚,但似乎是这样,如果我错了,请告诉我)。
因此,我建议您使用以下工作流:
添加目标帖子->指定状态项->之后,使用刚刚创建的目标帖子中的媒体上载程序上载图像。
这样,我们可以检索当前附件的目标ID(作为$_GET[\'post_id\']
), 然后检索指定的状态项,最后使用\'upload_dir\'
滤器
简单的事情:
add_filter(\'upload_dir\', \'set_destination_folder\', 999);
function set_destination_folder ( $upload_data ) {
if ( ! isset( $_REQUEST[\'post_id\']) )
return $upload_data;
$destination = get_post( $_REQUEST[\'post_id\'] );
if ( empty($destination) || $destination->post_type != \'destinations\' )
return $upload_data;
$states = get_the_terms($_REQUEST[\'post_id\'], \'states\');
if ( empty($states) || ! is_array($states) ) {
$subdir = \'/destinations/\' . $destination->post_name;
} else {
$subdir = \'/\' . array_shift($states)->slug . \'/destinations/\' . $destination->post_name;
}
$dir = $upload_data[\'basedir\'] . $subdir;
$url = $upload_data[\'baseurl\'] . $subdir;
return wp_parse_args(array(\'path\'=>$dir, \'url\'=>$url, \'subdir\'=>$subdir), $upload_data);
}
这样,当您从目标帖子上载图像时,如果目标帖子作为指定状态(作为分类术语),则图像将上载到文件夹中
wp-content/{$state_slug}/destinations/{$destination_slug}/
如果目标帖子没有指定状态,则图像将保存在文件夹中
wp-content/destinations/{$destination_slug}/
如果将更多状态分配给目标,则将采用第一个状态。
注意,该代码假定目的地的cpt名称为,\'destinations\'
各州的分类名称是\'states\'
.