在哪里添加代码以将图像自动附加到现有产品

时间:2016-07-13 作者:Sam Ridings

我从一个answer to a previous question:

add_action(\'add_attachment\', function( $attachmentID ) {
  if ( ! class_exists( \'WC_Product\' ) ) return; // if no WooCommerce do nothing

  // an attachment was jus saved, first of all get the file name
  $src = wp_get_attachment_image_src( $attachmentID, \'full\' );
  $filename = pathinfo( $src[0], PATHINFO_FILENAME );

  // now let\'s see if exits a product with the sku that match filename
  $args = array(
    \'meta_key\' => \'_sku\',
    \'meta_value\' => $filename,
    \'post_type\' => \'product\',
    \'posts_per_page\' => \'1\' // assuming sku is unique get only one post
  );
  $prods = get_posts( $args );
  if ( ! empty($prods) ) {

    // ok we have a match, exists a product having sku that match filename
    $product = array_pop( $prods );

    // set the thumbnail for the product
    set_post_thumbnail( $product, $attachmentID );

    // now "attach" the post to the product setting \'post_parent\'
    $attachment = get_post( $attachmentID );
    $attachment->post_parent = $product->ID;
    wp_update_post( $attachment );
  }
});
当我将图像添加到媒体库时,它将解决我将图像与现有产品匹配的问题。然而,我不知道我需要在wordpress的什么地方添加它。我对这一切都很陌生。

有人能帮忙吗?

1 个回复
最合适的回答,由SO网友:Tim Malone 整理而成

很可能,您所需要做的就是将此添加到您的主题functions.php 文件

但是,您还应该知道,如果您没有创建此主题并对其进行更新,这些修改将被覆盖。您可以再次应用它们,但这是一种更好的方法(正如我在this answer) 是到create a child theme.

或者,如果这是您想要进行的唯一修改,那么将代码转换为基本插件实际上可能更容易。将其添加到空白文件中,调用它whatever-you-like.php 并将其直接放入wp-content/plugins/ 文件夹在文件顶部,打开后<?php 标记,添加此代码:

/* Plugin Name: Match Images to Pre-existing Products */
然后,在你的插件页面上,你会看到这个插件出现——你可以随意激活和取消激活它。

第二种方法的好处是,您也可以对所做的其他修改执行此操作,然后在需要时轻松地单独激活/停用它们。

相关推荐

Wordpress cutting images size

我目前正在制作一个页面的横幅,过了一段时间,我注意到我的图像质量比我预期的稍差一些。我上传了1920x1024大小的图片,但在我查看管理仪表板后,我注意到它们已经缩小到1024x575!这有什么原因吗?有什么办法可以防止这种情况发生吗?提前感谢!