[Помогите] Переопределить классы

Тема в разделе "Wordpress", создана пользователем Belena27089, 26 июн 2019.

Информация :
Все пользователи Nulled-а обязаны ознакомиться с основными правилами форума!
Правила: Правила форума
Правила раздела: ОБЩИЕ СВЕДЕНИЯ | Правила раздела | Правила оформления [​IMG]
Полезное: Раскодирование шаблонов | Шорткоды | Поиск плагинов | [​IMG] Складчины
Плюшки: functions.PHP - часть 1 | часть 2
Разделы WP: Шаблоны | CodeCanyon
Модераторы: ponoroshca
  1. Belena27089

    Belena27089

    Регистр.:
    16 авг 2016
    Сообщения:
    487
    Симпатии:
    396
    Вот мне надо внести изменения в 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() )
            );
        }
    класс тега , допустим, добавить-изменить
     
    Последнее редактирование: 29 июн 2019
  2. Angelok

    Angelok Создатель

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

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

    вашатема/carousel-slider/product-carousel.php
     
    Belena27089 нравится это.
  3. Angelok

    Angelok Создатель

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

    Belena27089

    Регистр.:
    16 авг 2016
    Сообщения:
    487
    Симпатии:
    396
    а вот я его копирую и полностью плагин , и из папки \templates\public\ его вытаскиваю в разных вариациях , и просто прямо в тему копирую, на мои изменения в файле никак не реагирует.Как и куда его правильно прописать, создать в теме папку plugins?
     
  5. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    33
    Симпатии:
    17
    движок сканирует всю папку и находит
    вот у меня тот же вукоммерс из папки /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 https://docs.woocommerce.com/document/template-structure/
    * @AUTHOR WooThemes
    * @package WooCommerce/Templates/Emails
    * @version 2.5.0
    */
     
  6. Belena27089

    Belena27089

    Регистр.:
    16 авг 2016
    Сообщения:
    487
    Симпатии:
    396
    Вот так я первым делом сделала, но файл не реагирует , вукоммерс тоже так переопределён но его файлы реагируют на изменения
     
  7. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    33
    Симпатии:
    17
    а не хотите на минутку убрать родной файл из папки плагина и посмотреть результат? чисто ради интереса.
    а вообще надо сомтреть внутренности плагина - он должен искать шаблон - надо понять как. + наверняка есть документация к плагину в сети, где определена кастомизация
     
    Belena27089 нравится это.
  8. Belena27089

    Belena27089

    Регистр.:
    16 авг 2016
    Сообщения:
    487
    Симпатии:
    396
    в основном файле пути определены так
    Код:
    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 , но видимо тоже что-то не так делаю.
    просто интернет-магазины на другом движке в основном делаю, там всё переопределяется без проблем, а тут угораздило вордпресс взять).
     
  9. Belena27089

    Belena27089

    Регистр.:
    16 авг 2016
    Сообщения:
    487
    Симпатии:
    396
    убрала файл, он мне пишет в ответ
    Код:
    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
     
  10. Angelok

    Angelok Создатель

    Регистр.:
    26 июл 2017
    Сообщения:
    33
    Симпатии:
    17

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

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