Woocommerce Shop создание категории изображений - PullRequest
0 голосов
/ 25 января 2020

Когда я открываю URL mydomain.com/shop, я вижу строки активной категории. Я хочу создать такое же представление, но не могу найти, как woocommerce построит этот HTML код:

<img 
  src="https://www.example.com/wp-content/uploads/2020/01/dog-categorry-640x640.png" 
  alt="Dog" 
  width="450" 
  height="" 
  srcset="
  https://www.example.com/wp-content/uploads/2020/01/dog-categorry-640x640.png 640w, 
  https://www.example.com/wp-content/uploads/2020/01/dog-categorry-100x100.png 100w, 
  https://www.example.com/wp-content/uploads/2020/01/dog-categorry-300x300.png 300w, 
  https://www.example.com/wp-content/uploads/2020/01/dog-categorry-150x150.png 150w,
  https://www.example.com/wp-content/uploads/2020/01/dog-categorry-768x768.png 768w, 
  https://www.example.com/wp-content/uploads/2020/01/dog-categorry.png 1000w" sizes="(max-width: 450px) 100vw, 450px">

Я понимаю, что весь приведенный выше код HTML начинается в файле archive-product. php, но если я пытаюсь воссоздать его на своем виджете, он просто не Работа. Кто-нибудь может объяснить, где я могу найти код PHP, который создает этот код img HTML?

Или хотя бы как получить все ссылки, упомянутые в srcset?

1 Ответ

2 голосов
/ 25 января 2020

wp_get_attachment_image - это функция, которая создает эти теги img, она извлекает все предварительно определенные изображения, созданные при загрузке ресурса в WordPress.

Но, в WooCommerce они создали новую функцию для миниатюр категорий.

Функция с именем woocommerce_subcategory_thumbnail, которая находится в wc-template-functions.php под ./wp-content/plugins/woocommerce/includes/

Специфическая c строка кода Вы ищете (внутри archive-product) находится под крюком с именем woocommerce_subcategory_thumbnail.

    function woocommerce_subcategory_thumbnail( $category ) {
        $small_thumbnail_size = apply_filters( 'subcategory_archive_thumbnail_size', 'woocommerce_thumbnail' );
        $dimensions           = wc_get_image_size( $small_thumbnail_size );
        $thumbnail_id         = get_term_meta( $category->term_id, 'thumbnail_id', true );

        if ( $thumbnail_id ) {
            $image        = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size );
            $image        = $image[0];
            $image_srcset = function_exists( 'wp_get_attachment_image_srcset' ) ? wp_get_attachment_image_srcset( $thumbnail_id, $small_thumbnail_size ) : false;
            $image_sizes  = function_exists( 'wp_get_attachment_image_sizes' ) ? wp_get_attachment_image_sizes( $thumbnail_id, $small_thumbnail_size ) : false;
        } else {
            $image        = wc_placeholder_img_src();
            $image_srcset = false;
            $image_sizes  = false;
        }

        if ( $image ) {
            // Prevent esc_url from breaking spaces in urls for image embeds.
            // Ref: https://core.trac.wordpress.org/ticket/23605.
            $image = str_replace( ' ', '%20', $image );

            // Add responsive image markup if available.
            if ( $image_srcset && $image_sizes ) {
                echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $category->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" srcset="' . esc_attr( $image_srcset ) . '" sizes="' . esc_attr( $image_sizes ) . '" />';
            } else {
                echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $category->name ) . '" width="' . esc_attr( $dimensions['width'] ) . '" height="' . esc_attr( $dimensions['height'] ) . '" />';
            }
        }
    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...