繁体   English   中英

如何更改woocommerce产品图片上传路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM