Модераторы: 2man
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследование темы 
:(
    Опции темы
mstdmstd
Дата 3.10.2015, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Всем привет,
В wordpress 4.3.1 наследую тему "storefront" как описано тут http://codex.wordpress.org/Child_Themes

Создал файлы wp-content/themes/storefront-child/style.css :  

Код

/*               wp-content/themes/storefront-child/functions.php
 Theme Name:   Storefront Child
 Theme URI:    http://example.com/storefront-child/
 Description:  Storefront Child Theme
 Author:       Sergey Nilov
 Author URI:   http://example.com
 Template:     storefront
 Version:      1.0.0
 License:      GNU General Public License v2 or later
 License URI:  http://www.gnu.org/licenses/gpl-2.0.html
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  storefront-child
*/
 h1 {
    background-color: brown;
}
h2 {
    background-color: greenyellow;
}




и wp-content/themes/storefront-child/functions.php :
Код


<?php
/**
 * storefront-child engine room
 *
 * @package storefront-child
 */

/**
 * Initialize all the things.
 */
//require get_template_directory() . '/inc/init.php';
echo '<pre>get_template_directory() :'.print_r(get_template_directory() ,true).'</pre>';   // выводит   :  get_template_directory() :/mnt/diskD_Work/wwwroot/displo-wp/wp-content/themes/storefront
echo '<pre>get_template_directory_uri() :'.print_r(get_template_directory_uri() ,true).'</pre>';  // выводит   :  get_template_directory_uri() :http://local-displo-wp.com/wp-content/themes/storefront

@ini_set( 'log_errors', 1 );
//echo '<pre>WP_DEBUG_LOG:'.print_r(WP_DEBUG_LOG,true).'</pre>';
ini_set( 'error_log', ABSPATH . 'log/debug.log' );


add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    $parent_style = 'storefront'; 
    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'storefront-child',
        get_stylesheet_directory_uri() . '/style.css',
        array( $parent_style )
    );
}


Наследование работает, но некоторые вещи мне непоняты : 
1) А как указано наследование на родительский файл functions.php ?
css файл указан явно, через вызов get_stylesheet_directory_uri(
и почему  вызовы get_template_directory() и get_template_directory_uri()  возвращают родительскую тему storefront? По именам "storefront"/"storefront-child" в заголовке темы? 

2) При подключении в theme_enqueue_styles родительских "storefront" и "storefront-child" стилей в исходнике я вижу :
Код

<link rel='stylesheet' id='storefront-css'  href='http://local-displo-wp.com/wp-content/themes/storefront/style.css?ver=4.2.5' type='text/css' media='all' />
<link rel='stylesheet' id='storefront-child-css'  href='http://local-displo-wp.com/wp-content/themes/storefront-child/style.css?ver=4.2.5' type='text/css' media='all' />
<link rel='stylesheet' id='storefront-style-css'  href='http://local-displo-wp.com/wp-content/themes/storefront-child/style.css?ver=1.0.0' type='text/css' media='all' />


если закоментарить второй вызов стилей :
Код

    $parent_style = 'storefront'; // http://wordpress.stackexchange.com/questions/163301/versioning-import-of-parent-themes-style-css
    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    /*wp_enqueue_style( 'storefront-child',
        get_stylesheet_directory_uri() . '/style.css',
        array( $parent_style )
    ); */


То вижу в исходниках:
Код

<link rel='stylesheet' id='storefront-css'  href='http://local-displo-wp.com/wp-content/themes/storefront/style.css?ver=4.2.5' type='text/css' media='all' />
<link rel='stylesheet' id='storefront-style-css'  href='http://local-displo-wp.com/wp-content/themes/storefront-child/style.css?ver=1.0.0' type='text/css' media='all' />

Как-то не так как я полагал по описанию, почему в первом случае подлючалось 3 css-файла( storefront-child/style.css дважды но с разными номерами версий ) а во втором 2 файла?  

3)
Мне нужно было вывести в списке заказов ниже каждого заказа картинку на основе FabricJS-библиотеки на основе этого пункта заказа 
Я сделал :
Код

add_action('woocommerce_order_item_meta_end', 'displo_woocommerce_order_item_meta_end', 90);
function displo_woocommerce_order_item_meta_end($item_id, $item = '', $order = '')
{
    $_product_id = wc_get_order_item_meta($item_id, '_product_id');
    $nextPost = get_post($_product_id);
    show_displo_template_preview($nextPost, false, false, 'woocommerce_item_meta', $item_id, true);
}


Где show_displo_template_preview - это функция вывода картинки и ее можно вызвать на странице несколько раз
При этом мне нужно сохранить список ссылок на эти картинки чтобы отображения их можно было скачать
То есть нужно сделать массив где и хранить данные ссылки
Единственное место я нашел для этого это в файле wp-content/plugins/woocommerce/templates/order/order-details.php c кодом:

Код

    </thead>
    <script type="text/javascript" language="JavaScript">
        //<![CDATA[
        var stagesList= []
        //]]>
    </script>

            <tbody>

 
все работает, но это файл woocommerce плагина, а не моей темы.
Мне такое рещрешение не понравилось, а есть ли лучшее решение, чтобы мой код не затерся при при обновлении woocommerce плагина ? 

PM MAIL   Вверх
ant.grakhov
Дата 4.10.2015, 12:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Во-первых, есть отличная статья, дополняющая кодекс: https://wpmag.ru/2013/dochernie-temy-wordpress/

> 1) А как указано наследование на родительский файл functions.php ?
functions.php у дочерней темы дополняет родительский, но исполняется до вызова родительского.

> и почему  вызовы get_template_directory() и get_template_directory_uri()  возвращают родительскую тему storefront?

Используйте, например, get_template_directory_uri() если вы читали кодекс, там ясно написано, что get_template_directory() всегда возвращает путь до родительской темы.

Подключить родительский style.css можно куда проще, сделав это в самом дочернем style.css:
@import url('../storefront/style.css');

Что касается js из плагина woocommerce вообще не понял, что вы хотите, но в любом случае файлы плагина нельзя редактировать.




Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
mstdmstd
Дата 5.10.2015, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет




1) Спасибо за ссылку на статью,
 Я ожидал какую команду типа :
Код

Theme storefront-child extends storefront

как вордпресс определяет что storefront родительский для storefront-child ?

3) Нужно одьявить переменную javascript-а, которая была бы общей для всей страницы Order Details. Есть ли специальные актионы для этого?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WordPress | Следующая тема »


 




[ Время генерации скрипта: 0.0423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.