추천 이미지에 대해서만 섬네일 생성


10

이 썸네일 크기를 제작하는 간단한 방법 (사용자 정의 코드 또는 플러그인) 있는지 알고 싶습니다 에만 내가으로 사용하려는 것을 이미지 기능을 갖춘 이미지 이미지에 대한 (index.php를, archive.php 등),하지만 게시물에 사용됩니다 (single.php). 내 주요 목표는 내 테마가 절대 사용하지 않는 축소판을 만들지 않음으로써 서버 공간 사용량을 줄이는 것입니다.

내 썸네일은 실제로 720px와 328px의 두 가지 크기를 가지며 720px 너비의 추천 이미지 (홈 페이지에만 해당)도 328px입니다 (아카이브 .php 및 sidebar.php의 경우)

현재 내가 아는 유일한 프로그래밍 방식 은 모든 이미지 업로드에 대해 축소판생성 하는 것입니다. 대부분의 업로드는 이미지를 게시하고 서버에서 많은 이미지를 수동으로 삭제해야하기 때문에 바람직하지 않습니다.

플러그인보다 사용자 정의 코드를 선호하지만 플러그인이 허용됩니다. 이미지 크기 조정 플러그인이 있지만 오랫동안 업데이트되지 않았습니다 (TimThumb, Dynamic Image Resizer ).

Wordpress SE 에서도 비슷한 질문을 찾았 지만 허용 된 답변으로 실제로 문제가 해결되지는 않습니다.


편집 : 추천 이미지가 아닌 게시물 내부 이미지의 미리보기 이미지를 삭제하거나 방지해야합니다.

(1) 추천 이미지 : WP에서 자동 생성 한 추가 축소판 그림이 좋습니다.

(2) 게시물에 사용 된 이미지 : 원본 이미지를 업로드하고 추가 크기를 생성하지 않습니다. 이미지를 업로드하기 전에 이미지를 자르고 크기를 조정하고 최적화하며 하나의 크기가 내 요구에 맞습니다.



1
첫째, 가능한 중복 이라고 말합니다 . 둘째, 문제를 해결하는 데 도움이 될 수 있습니다. 필요에 따라 문제를 해결할 수 있기 때문입니다. 마지막으로»Dynamic Image Resizer«플러그인에 대한 답변이 있지만 다른 플러그인입니다.
Nicolai

2
그것에 뛰어들 시간이 없지만, 당신이 알고있는 것은 썸네일 ID-메타 키 : _thumbnail_id-, 실제로 충분해야하며 save_post비슷한 후크가 갈 수있는 방법 일 수 있습니다. 그러나 게시물의 이미지는 다른 게시물에서 미리보기 이미지로 사용될 수 있다는 점을 잊지 마십시오.이를 설명하는 메커니즘이 필요할 수 있습니다.
Nicolai

1
당신이 쓴 것을 고려할 때, 당신은 추천 이미지의 추가 크기를 신경 쓰지 않고 더 많은 생각을했습니다. 포스트 썸네일 / 기능 이미지가 첨부 된 이미지 중 어떤 이미지인지 알고 있다면 다른 이미지의 추가 이미지 크기를 삭제할 수 있습니다 해당 프로세스에서 추천 이미지를 제외하여 전에 가능한 제한 / 약점 하나를 언급했습니다.
Nicolai

1
제안 : 전체 크기 조정을 완전히 비활성화 add_filter('intermediate_image_sizes_advanced', '__return_false')한 다음 글라이드를 사용
gmazzap

답변:


2

이 기능은 이미지 크기를 임시로 등록하고 이미지를 생성하고 (필요한 경우) 크기를 제거하여 이미지를 생성하므로 해당 이미지 크기로 새 이미지가 생성되지 않습니다.

function lazy_image_size($image_id, $width, $height, $crop) {
    // Temporarily create an image size
    $size_id = 'lazy_' . $width . 'x' .$height . '_' . ((string) $crop);
    add_image_size($size_id, $width, $height, $crop);

    // Get the attachment data
    $meta = wp_get_attachment_metadata($image_id);

    // If the size does not exist
    if(!isset($meta['sizes'][$size_id])) {
        require_once(ABSPATH . 'wp-admin/includes/image.php');

        $file = get_attached_file($image_id);
        $new_meta = wp_generate_attachment_metadata($image_id, $file);

        // Merge the sizes so we don't lose already generated sizes
        $new_meta['sizes'] = array_merge($meta['sizes'], $new_meta['sizes']);

        // Update the meta data
        wp_update_attachment_metadata($image_id, $new_meta);
    }

    // Fetch the sized image
    $sized = wp_get_attachment_image_src($image_id, $size_id);

    // Remove the image size so new images won't be created in this size automatically
    remove_image_size($size_id);
    return $sized;
}

이미지는 필요할 때까지 생성되지 않기 때문에 "게으른"것입니다.

유스 케이스에서는 lazy_image_size게시물 썸네일 ID로 전화 하여 원하는 크기의 이미지를 얻습니다. 첫 번째 호출에서 이미지가 생성됩니다. 후속 호출은 기존 이미지를 가져옵니다.

요지 : https://gist.github.com/mtinsley/be503d90724be73cdda4


0

링크 를 볼 수 있습니다 . 같은 몇 가지 예가 있습니다

add_action( 'after_setup_theme', 'baw_theme_setup' );
function baw_theme_setup() {
  add_image_size( 'category-thumb', 300 ); // 300 pixels wide (and unlimited height)
  add_image_size( 'homepage-thumb', 220, 180, true ); // (cropped)
}

2
업로드 한 모든 것이 아닌 특정 이미지에만 미리보기 이미지가 필요합니다. 기본적으로 이미지를 업로드 할 때 썸네일 생성 여부를 제어하고 싶습니다.
imrek

그런데 왜? 저장 공간이 문제입니까? 사용 가능한 저장 공간이 너무 많을 때 상상하기 어렵습니다.
aequalsb

0

1. 대시 보드> 설정> 미디어로
이동합니다. 2. 축소판 그림을 정확한 크기로 자르기 (일반적으로 축소판 그림은 비례)를 선택 취소합니다.
3. 모든 입력에 0을 입력합니다 (모든 크기에 대해 0)
4. 이들을 함수에 추가합니다 .php

// Enable support for Post Thumbnails, and declare sizes.
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 400, 400, array("center","center") );
function fw_add_image_insert_override($sizes){
    // unset( $sizes['thumbnail']);
    unset( $sizes['small']);
    unset( $sizes['medium']);
    unset( $sizes['large']);
    return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'fw_add_image_insert_override' );

5. functions.php에 코드 라인이 없는지 확인하십시오. add_imge_size 참고 : : 미리보기 이미지에 400x400 크기를 사용한다고 가정합니다. 이제 사진을 업로드하면 최소 4 개의 버전 대신 2 개의 버전 만 생성됩니다. 이전과 같이.


0

WordPress가 특정 이미지에 대해서만 추가 크기를 만들지 못하게하려면 업로드하려는 이미지가 특정 목적으로 만 사용됨을 나타내는 방법이 있어야합니다. 업로드하기 전에이 문제가 발생해야합니다.

업로드 작업 중에 이러한 옵션을 표시하는 인터페이스 (기본 제공)가 없으므로이 기능을 추가 한 플러그인이 없으면 추가 이미지 생성을 막을 수 없습니다.

그러나 왜 세계에서 추가 이미지 크기를 원하지 않습니까? 다른 크기의 이미지를 사용하려고 할 때 상황이 발생할 수있는 시점을 절대 알 수 없습니다. 저장 공간이 걱정 되십니까?

이와 같은 특정 크기 사양을 사용할 수 없습니까? the_post_thumbnail( array(100, 100) );

내가 읽은 대부분의 답변과 의견은 이미지 크기에 맞게 WordPress 환경을 사용자 정의하는 방법을 설명하지만 조건부로 수행하는 것은 언급하지 않습니다. 또한 이미지를 업로드하기 전에 이미지의 사용을 나타낼 수 있어야한다는 사실을 다루지 않습니다.

게시물에서 너무 작은 이미지 나 너무 큰 이미지를 보정하려는 경우 몇 가지를 활용할 수 있습니다.

  1. CSS :와 같은 항목을 스타일 시트에 추가 할 수 있습니다 .post-entry img { max-width:200px; max-height:300px; }. 이것은 이미지 자체의 크기에 의존하는 것보다 훨씬 보편적이며 효과적입니다. 이는 많은 포토샵 시간입니다.

  2. 템플릿 : 게시물 HTML 출력이 생성되는 템플릿 파일을 변경하고 다음과 같이 이미지 크기를 지정할 수 있습니다.

이 문서는 WordPress에서 참조하십시오 : https://codex.wordpress.org/Function_Reference/the_post_thumbnail


0

안녕 – 나는 비슷한 문제가 있었다. WooCommerce는 카탈로그 및 관련 제품 이미지에 카탈로그 이미지를 사용합니다. 이미지 품질이나 속도가 느슨해지면 이상적이지 않습니다. 그래서 관련 제품에 네 번째 이미지 카테고리를 추가하려고했습니다. Howdy McGee가 문제를 해결했습니다. Howdy McGees의 답변을 살펴보십시오.

관련 제품 이미지 크기 수정 : 코드를 읽으십시오 !

그것은 나의 필요를 위해 훌륭하게 해결되었습니다. 문제의 경우 동일한 논리가 적용될 수 있습니다. 도움이 되었기를 바랍니다.

문안 인사,

테오

** 추가 : **

작동하는 솔루션을 찾았습니다.

1 단계 : functions.php에 새로운 썸네일 크기를 할당하십시오. 참조 확인 : wp codex !

/*add your custom size*/
add_action( 'after_setup_theme', 'your_theme_setup' );
function your_theme_setup() {
add_image_size( 'your-thumb', 123, 123, true );//insert your values
}

참고 : 'your-thumb', 나중에이 변수 이름을 사용합니다

2 단계 : 그런 다음 추천 제품을 표시 할 때마다 다음 코드를 추가하십시오.

    <h1>featured products</h1> 
    <div class="woocommerce">
    <ul class= "products">

    <?php
    $args = array( 'post_type' => 'product', 'meta_key' => '_featured','posts_per_page' => 4,'columns' => '4', 'meta_value' => 'yes' );
     $loop = new WP_Query( $args );

     while ( $loop->have_posts() ) : $loop->the_post(); global $product; ?>

                    <li class="product post-<?php echo get_the_ID(); ?>">    
                        <a href="<?php echo get_permalink( $loop->post->ID ) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>">

                            <?php woocommerce_show_product_sale_flash( $post, $product ); ?>
                            <?php if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'your-thumb'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="123px" height="123px" />'; ?></a>
                            <h3><?php the_title(); ?></h3><span class="price"><?php echo $product->get_price_html(); ?></span>

                    </li>

    <?php endwhile; ?>
    <?php wp_reset_query(); ?> 
    </ul>
    </div>

참조 및 정보 : ( www.haloseeker.com/display-woocommerce-featured-products-without-a-shortcode/ )

wootheme mystyle의 index.php (내 홈페이지)에 넣었습니다. 온라인에서 '손님'을 사용하는 것을 잊지 마십시오 :

<?php if (has_post_thumbnail( $loop->post->ID )) echo get_the_post_thumbnail($loop->post->ID, 'your-thumb'); else echo '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="123px" height="123px" />'; ?></a>

3 단계 : 미리보기 이미지 재생성, 플러그인 https://wordpress.org/plugins/regenerate-thumbnails/

4 단계 : 브라우저 새로 고침 및 DOM 검사 및 값 비교

테마에 따라 마크 업 및 클래스 이름을 변경할 수 있습니다. 위의 방법을 테스트했으며 제대로 작동합니다.

내가 지금까지 할 수 없었던 유일한 것은 카트에 추가 버튼 단축 코드에 변수를 쓰는 방법을 모르기 때문에 카트에 추가 버튼을 추가하는 것입니다. 이것은 코드입니다.

<?php echo do_shortcode('[add_to_cart id="variable number?"]'); ?>

이게 도움이 되길 바란다.

이 작업을 수행하는 데 더 우아한 방법이 있습니다. 예를 들어 functions.php에 함수가있는 경우

문안 인사,

테오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.