Помощь Переопределить классы

Belena27089

Мой дом здесь!
Регистрация
16 Авг 2016
Сообщения
462
Реакции
433
Не нашла. Как можно переопределить классы WooCommerce Blocks в теме?
 

Belena27089

Мой дом здесь!
Регистрация
16 Авг 2016
Сообщения
462
Реакции
433
Вот мне надо внести изменения в carousel-slider в файл \wp-content\plugins\carousel-slider\templates\public\product-carousel.php, я его и так и сяк пытаюсь в тему вставить, но он не реагирует на мои изменения , только в основной папке.
В wp-content\plugins\woo-gutenberg-products-block\assets\php\class-wgpb-block-grid-base.php
Код:
**
    * Get the price.
    *
    * @param WC_Product $product Product.
    * @return string Rendered product output.
    */
    protected function get_price_html( $product ) {
        if ( empty( $this->attributes['contentVisibility']['price'] ) ) {
            return '';
        }
        return sprintf(
            '<div class="wc-block-grid__product-price price">%s</div>',
            $product->get_price_html()
        );
    }

/**
     * Get the "add to cart" button.
     *
     * @param WC_Product $product Product.
     * @return string Rendered product output.
     */
    protected function get_add_to_cart( $product ) {
        $attributes = array(
            'aria-label'       => $product->add_to_cart_description(),
            'data-quantity'    => '1',
            'data-product_id'  => $product->get_id(),
            'data-product_sku' => $product->get_sku(),
            'rel'              => 'nofollow',
            'class'            => 'wp-block-button__link add_to_cart_button',
        );

        if ( $product->supports( 'ajax_add_to_cart' ) ) {
            $attributes['class'] .= ' ajax_add_to_cart';
        }

        return sprintf(
            '<a href="%s" %s>%s</a>',
            esc_url( $product->add_to_cart_url() ),
            wc_implode_html_attributes( $attributes ),
            esc_html( $product->add_to_cart_text() )
        );
    }

класс тега , допустим, добавить-изменить
 
Последнее редактирование:

Angelok

Создатель
Регистрация
26 Июл 2017
Сообщения
32
Реакции
17
скопируйте этот файл шаблона в папку с темой и делайте с ним что хотите. при обновлении плагинов, этот файл в папке с темой не будет обновляться.

для удобства некоторые еще создают в папке с темой подпаку с названием плагина, чтобы файлы не перемешались:

вашатема/carousel-slider/product-carousel.php
 

Angelok

Создатель
Регистрация
26 Июл 2017
Сообщения
32
Реакции
17
Вот мне надо внести изменения в carousel-slider в файл \wp-content\plugins\carousel-slider\templates\public\product-carousel.php, я его и так и сяк пытаюсь в тему вставить, но он не реагирует на мои изменения , только в основной папке.
В wp-content\plugins\woo-gutenberg-products-block\assets\php\class-wgpb-block-grid-base.php
Код:
**
    * Get the price.
    *
    * @param WC_Product $product Product.
    * @return string Rendered product output.
    */
    protected function get_price_html( $product ) {
        if ( empty( $this->attributes['contentVisibility']['price'] ) ) {
            return '';
        }
        return sprintf(
            '<div class="wc-block-grid__product-price price">%s</div>',
            $product->get_price_html()
        );
    }

/**
     * Get the "add to cart" button.
     *
     * @param WC_Product $product Product.
     * @return string Rendered product output.
     */
    protected function get_add_to_cart( $product ) {
        $attributes = array(
            'aria-label'       => $product->add_to_cart_description(),
            'data-quantity'    => '1',
            'data-product_id'  => $product->get_id(),
            'data-product_sku' => $product->get_sku(),
            'rel'              => 'nofollow',
            'class'            => 'wp-block-button__link add_to_cart_button',
        );

        if ( $product->supports( 'ajax_add_to_cart' ) ) {
            $attributes['class'] .= ' ajax_add_to_cart';
        }

        return sprintf(
            '<a href="%s" %s>%s</a>',
            esc_url( $product->add_to_cart_url() ),
            wc_implode_html_attributes( $attributes ),
            esc_html( $product->add_to_cart_text() )
        );
    }

класс тега , допустим, добавить-изменить

а вот со вторым файлом В wp-content\plugins\woo-gutenberg-products-block\assets\php\class-wgpb-block-grid-base.php
беда.. - вы не можете на него влиять извне. это не файл шаблона. тут только правкой напрямую. опять же объявление "protected" печалит тоже.
 

Belena27089

Мой дом здесь!
Регистрация
16 Авг 2016
Сообщения
462
Реакции
433
скопируйте этот файл шаблона в папку с темой и делайте с ним что хотите. при обновлении плагинов, этот файл в папке с темой не будет обновляться.

для удобства некоторые еще создают в папке с темой подпаку с названием плагина, чтобы файлы не перемешались:

вашатема/carousel-slider/product-carousel.php
а вот я его копирую и полностью плагин , и из папки \templates\public\ его вытаскиваю в разных вариациях , и просто прямо в тему копирую, на мои изменения в файле никак не реагирует.Как и куда его правильно прописать, создать в теме папку plugins?
 

Angelok

Создатель
Регистрация
26 Июл 2017
Сообщения
32
Реакции
17
а вот я его копирую и полностью плагин , и из папки \templates\public\ его вытаскиваю в разных вариациях , и просто прямо в тему копирую, на мои изменения в файле никак не реагирует.Как и куда его правильно прописать, создать в теме папку plugins?

движок сканирует всю папку и находит
вот у меня тот же вукоммерс из папки /wp-content/plugins/woocommerce/templates/emails
находятся в /wp-content/themes/моятемя/woocommerce/emails

главное чтобы имя файла совпадало и начало файла тоже, там в виде комментариев задается принадлежность шаблона

<?php
/**
* Customer processing order email
*
* This template can be overridden by copying it to yourtheme/woocommerce/emails/customer-processing-order.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see Для просмотра ссылки Войди или Зарегистрируйся
* @AUTHOR WooThemes
* @package WooCommerce/Templates/Emails
* @version 2.5.0
*/
 

Angelok

Создатель
Регистрация
26 Июл 2017
Сообщения
32
Реакции
17
Вот так я первым делом сделала, но файл не реагирует , вукоммерс тоже так переопределён но его файлы реагируют на изменения
а не хотите на минутку убрать родной файл из папки плагина и посмотреть результат? чисто ради интереса.
а вообще надо сомтреть внутренности плагина - он должен искать шаблон - надо понять как. + наверняка есть документация к плагину в сети, где определена кастомизация
 

Belena27089

Мой дом здесь!
Регистрация
16 Авг 2016
Сообщения
462
Реакции
433
в основном файле пути определены так
Код:
public function define_constants() {
            define( 'CAROUSEL_SLIDER_VERSION', $this->version );
            define( 'CAROUSEL_SLIDER_POST_TYPE', $this->post_type );
            define( 'CAROUSEL_SLIDER_FILE', __FILE__ );
            define( 'CAROUSEL_SLIDER_PATH', dirname( CAROUSEL_SLIDER_FILE ) );
            define( 'CAROUSEL_SLIDER_INCLUDES', CAROUSEL_SLIDER_PATH . '/includes' );
            define( 'CAROUSEL_SLIDER_TEMPLATES', CAROUSEL_SLIDER_PATH . '/templates' );
            define( 'CAROUSEL_SLIDER_WIDGETS', CAROUSEL_SLIDER_PATH . '/widgets' );
            define( 'CAROUSEL_SLIDER_URL', plugins_url( '', CAROUSEL_SLIDER_FILE ) );
            define( 'CAROUSEL_SLIDER_ASSETS', CAROUSEL_SLIDER_URL . '/assets' );
        }
я пыталась изменить их направление в файле function.php , но видимо тоже что-то не так делаю.
просто интернет-магазины на другом движке в основном делаю, там всё переопределяется без проблем, а тут угораздило вордпресс взять).
 

Belena27089

Мой дом здесь!
Регистрация
16 Авг 2016
Сообщения
462
Реакции
433
а не хотите на минутку убрать родной файл из папки плагина и посмотреть результат? чисто ради интереса.
а вообще надо сомтреть внутренности плагина - он должен искать шаблон - надо понять как. + наверняка есть документация к плагину в сети, где определена кастомизация
убрала файл, он мне пишет в ответ
Код:
Warning: require(D:\OpenServer\domains\wppriaja\wp-content\plugins\carousel-slider/templates/public/product-carousel.php): failed to open stream: No such file or directory in D:\OpenServer\domains\wppriaja\wp-content\plugins\carousel-slider\shortcodes\class-carousel-slider-shortcode.php on line 114

Fatal error: require(): Failed opening required 'D:\OpenServer\domains\wppriaja\wp-content\plugins\carousel-slider/templates/public/product-carousel.php' (include_path='D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/archive_tar;D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/console_getopt;D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/http_request2;D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/mail_mime;D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/mail_mime-decode;D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/net_url2;D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/pear-core-minimal/src;D:\OpenServer\domains\wppriaja\wp-content\plugins\backwpup\vendor/pear/pear_exception;.;d:/openserver/modules/php/PHP-7.1;d:/openserver/modules/php/PHP-7.1/PEAR/pear') in D:\OpenServer\domains\wppriaja\wp-content\plugins\carousel-slider\shortcodes\class-carousel-slider-shortcode.php on line 114
 

Angelok

Создатель
Регистрация
26 Июл 2017
Сообщения
32
Реакции
17
в основном файле пути определены так
Код:
public function define_constants() {
            define( 'CAROUSEL_SLIDER_VERSION', $this->version );
            define( 'CAROUSEL_SLIDER_POST_TYPE', $this->post_type );
            define( 'CAROUSEL_SLIDER_FILE', __FILE__ );
            define( 'CAROUSEL_SLIDER_PATH', dirname( CAROUSEL_SLIDER_FILE ) );
            define( 'CAROUSEL_SLIDER_INCLUDES', CAROUSEL_SLIDER_PATH . '/includes' );
            define( 'CAROUSEL_SLIDER_TEMPLATES', CAROUSEL_SLIDER_PATH . '/templates' );
            define( 'CAROUSEL_SLIDER_WIDGETS', CAROUSEL_SLIDER_PATH . '/widgets' );
            define( 'CAROUSEL_SLIDER_URL', plugins_url( '', CAROUSEL_SLIDER_FILE ) );
            define( 'CAROUSEL_SLIDER_ASSETS', CAROUSEL_SLIDER_URL . '/assets' );
        }
я пыталась изменить их направление в файле function.php , но видимо тоже что-то не так делаю.
просто интернет-магазины на другом движке в основном делаю, там всё переопределяется без проблем, а тут угораздило вордпресс взять).


мда, видать разрабы не потрудились сделать подгрузку шаблонов из темы.. очень странно...

попробуйте обмануть define и переопределить через const ,если у вас php 5.6+
 
Сверху