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

时间:2014-07-23 03:45:09

标签: php wordpress woocommerce

我有一个wordpress多站点,一个主要和四个子网站。我已经为子网站分享了woocommerce产品的插件。现在子站点可以从子站点添加或更新mainsite产品。但是当在前端显示时,媒体路径是错误的。我想使用所有子站点产品图像路径到同一路径。怎么可能?

2 个答案:

答案 0 :(得分:3)

我会称这是一个尝试和错误的事情,我做了类似的事情,但需要一些时间来定制你想要的。

所以这就是我认为可以解决你的主要问题:

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,所有这一切都发生在从数据库中提取所有帖子之前。< / p>

产品是要查询的当前post_type,如果您希望这也适用于订单,您可能会检查'shop_order'

要知道正在查询哪个post_type,您应该检查网址,例如:/edit.php?post_type=shop_order

这可能会带来一些问题,例如管理栏中博客的标题是来自主站点的那个,并且它缺少在某些时候它需要恢复到主站点,但至少这应该做诀窍。

检查此解决方案并让我知道最终结果

答案 1 :(得分:2)

在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'创建过滤器。