php 如果图像使用占位符,请转换为草稿

sg3maiej  于 2023-02-03  发布在  PHP
关注(0)|答案(1)|浏览(106)

我的商店是WooCommerce。我目前正在尝试使它,以便如果我的商店中的产品使用占位符,它会自动设置为草稿。我也使它,使此代码找到没有图像的产品,它将应用$src中的图像主要是为了测试,所以我可以看到这部分至少是工作的我对PHP不是很熟悉,下面的代码是我发现的其他人的建议和方法的组合!
我已经删除了下面的数据保护的实际链接,并添加了一个假的。任何帮助是赞赏。

add_filter('woocommerce_placeholder_img_src', 'wp_kama_woocommerce_placeholder_img_src_filter');
function wp_kama_woocommerce_placeholder_img_src_filter($src) {
    $src = 'https://domain/location/image.png';
    $placeholder_image = get_option('woocommerce_placeholder_image', 0);
    $args = array('post_type' => 'product', 'posts_per_page' => - 1, 'post_status' => 'publish', 'fields' => 'ids', 'meta_query' => array(array('ID' => $post->ID, 'post_status' => 'publish',)),);
    if (!empty($placeholder_image)) {
        if (is_numeric($placeholder_image)) {
            $image = wp_get_attachment_image_src($placeholder_image, $size);
            if (!empty($image[0])) {
                $src = $image[0];
                $loop_arg = new WP_Query($args);
                $loop_ids = $loop_arg->posts;
                foreach ($loop_ids as $loop => $loop_id) {
                    wp_update_post(array('ID' => $loop_id, 'post_status' => 'publish'));
                    wp_reset_query();
                }
            }
        } else {
            $src = $placeholder_image;
            $loop_arg = new WP_Query($args);
            $loop_ids = $loop_arg->posts;
            foreach ($loop_ids as $loop => $loop_id) {
                wp_update_post(array('ID' => $loop_id, 'post_status' => 'draft'));
                wp_reset_query();
            }
        }
    }
    return $src;
}
return apply_filters('woocommerce_placeholder_img_src', $src);
z31licg0

z31licg01#

更新:如果有人需要它,我得到了这个代码的工作。这个代码将检查我的产品,如果它有一个图像,它将发布它,如果没有,它将起草。

$args = array('post_type' => 'product', 'posts_per_page' => - 1, 
       'post_status' => array('publish', 'draft', 'trash'), 'fields' => 'ids');
       $loop_arg = new WP_Query($args);
       $loop_ids = $loop_arg->posts;

       foreach ($loop_ids as $loop => $loop_id) {
       wp_update_post(array('ID' => $loop_id));
       $placeholder_image = get_the_post_thumbnail($loop_id);
       if (!$placeholder_image) {
         wp_update_post(array('ID' => $loop_id, 'post_status' => 'draft'));
       } else {
         wp_update_post(array('ID' => $loop_id, 'post_status' => 'publish'));
       }
       wp_reset_query();
       }

相关问题