[英]How to change woocommerce product image upload path
我有一个wordpress多站点,其中有一个主要网站和四个子网站。 我已经完成了将woocommerce产品共享到子站点的插件。 现在,子站点可以从子站点添加或更新主站点产品。 但是在前端显示时,媒体路径错误。 我想使用所有子站点产品图像路径到同一路径。 怎么可能?
我将其称为“试错法”,我做了类似的事情,但是需要一些时间来进行自定义。
因此,这就是我认为可以解决您的主要问题的方法:
add_action('pre_get_posts', '_my_pre_get_posts', 10, 1);
function _my_pre_get_posts( $wp ) {
global $typenow, $blog_id;
if ( 'product' == $typenow && $blog_id != 1) {
switch_to_blog(1);
}
}
如果$blog_id
不是主要站点( 读取 ID = 1),则应切换到博客ID 1,这一切都是在从数据库中提取所有帖子之前发生的。
product是当前要查询的post_type,如果您希望它也与订单一起使用,则可能会检查'shop_order'
。
要知道要查询哪个post_type,应检查网址,例如: /edit.php?post_type=shop_order
。
这可能会带来一些问题,例如管理栏中博客的标题是主站点上的标题,并且缺少在某个时候需要将其还原回主站点的想法,但是至少这样做可以解决问题。
检查此解决方案,让我知道结果如何
在woocommerce插件和文件类-wc-admin-post-types.php中
woocomerce通过过滤器“ upload_dir”覆盖WordPress上传过滤器
add_filter( 'upload_dir', array( $this, 'upload_dir' ) );
public function upload_dir( $pathdata ) {
// Change upload dir for downloadable files
if ( isset( $_POST['type'] ) && 'downloadable_product' == $_POST['type'] ) {
if ( empty( $pathdata['subdir'] ) ) {
$pathdata['path'] = $pathdata['path'] . '/woocommerce_uploads';
$pathdata['url'] = $pathdata['url']. '/woocommerce_uploads';
$pathdata['subdir'] = '/woocommerce_uploads';
} else {
$new_subdir = '/woocommerce_uploads' . $pathdata['subdir'];
$pathdata['path'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['path'] );
$pathdata['url'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['url'] );
$pathdata['subdir'] = str_replace( $pathdata['subdir'], $new_subdir, $pathdata['subdir'] );
}
}
return $pathdata;
}
因此,如果您要覆盖它,则可以使用较高优先级对此“ upload_dir”创建过滤器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.