Поддержка Темы и шаблоны Помогите разобраться в underscores

  • Решено akakinache

    (@akakinache)


    Всем привет

    Я делаю тему, и, как водится, нифига в этом не понимаю. Изучил массу туториалов и читаю кодекс каждый день, разбираюсь с функциями и тегами шаблонов. Тем не менее, остается множество вопросов, т.к. моя тема подразумевает возможность кастомизации и различных вариантов оформления шапки, футера и т.п.

    Делаю тему на основе underscores.

    Вопросы пока сумбурные, не обращайте внимания, целостности картины пока нет.

    1. Functions.php
    Есть ли какой то минимально необходимый набор функций, которые должны быть включены в этот файл? В underscores в этом файле уже были функции, к сожалению я не понимаю, что они делают и почему описаны именно так. К примеру, открываю functions Авады — там совсем по-другому все начинается и заканчивается, почему тогда в underscores включили функции, которые не включили в Аваду? Ведь если underscores стартовая тема, то она должна включать некие необходимые функции для любой темы.

    2. Почему запрещены hard-coded ссылки? Например, чтобы подключить шрифты к тебе, мне пришлось фигачить в functions вот такой код:

    /**
     * ADDING FONTS
     */
    function theme_slug_fonts_url() {
        $fonts_url = '';
    
        /* Translators: If there are characters in your language that are not
        * supported by Raleway, translate this to 'off'. Do not translate
        * into your own language.
        */
        $raleway = _x( 'on', 'Raleway font: on or off', 'theme-slug' );
    
        /* Translators: If there are characters in your language that are not
        * supported by Montserrat, translate this to 'off'. Do not translate
        * into your own language.
        */
        $montserrat = _x( 'on', 'Montserrat font: on or off', 'theme-slug' );
    
        if ( 'off' !== $raleway || 'off' !== $montserrat ) {
            $font_families = array();
    
            if ( 'off' !== $raleway ) {
                $font_families[] = 'Raleway:300,400,700,800,900';
            }
    
            if ( 'off' !== $montserrat ) {
                $font_families[] = 'Montserrat:400,700';
            }
    
            $query_args = array(
                'family' => urlencode( implode( '|', $font_families ) ),
                'subset' => urlencode( 'latin,latin-ext' ),
            );
    
            $fonts_url = add_query_arg( $query_args, '//fonts.googleapis.com/css' );
        }
    
        return $fonts_url;
    }
    
    function theme_slug_scripts_styles() {
        wp_enqueue_style( 'theme-slug-fonts', theme_slug_fonts_url(), array(), null );
    }
    add_action( 'wp_enqueue_scripts', 'theme_slug_scripts_styles' );

    Громоздко, как по мне, особенно в сравнении с обычной ссылкой в head. Как объясняет автор этого кода на themeshaper, такой способ будет наиболее подходящим, если тема планируется для паблика. Почему?

    3. Кастомизация
    Я хочу, чтобы пользователь могли выбрать варианты header, включать/отключать некоторые его блоки, менять стиль скролла и некоторые css стили. Как лучше это реализовать? Написать плагин с уникальным интерфейсом или подключить эти опции в стандартный кастомизатор WP (посредством functions.php) ?

    А аваде реализован такой подход

    if( ! $sidebar_exists ) {
    		$content_css = 'width:100%';
    		$sidebar_css = 'display:none';
    		$content_class= 'full-width';
    		$sidebar_exists = false;

    Я понял, что если сайдбара не существует, то в css задаем content(?) width: 100%. ну и т.д. Вопрос: что такое $sidebar? Эта переменная где то должна быть описана, чтобы движок понял, что это сайдбар, и вообще, если сайдбаров много? Может это просто опция в кастомизаторе авады… Аналогичный вопрос касательно $content.

    Воообще, если бы вы зяглянули в шаблоны мегапопулярной (и мегауродливой при этом) авады — вы бы ужаснулись. Я верстал шаблоны для разных систем, но такого кошмара не встречал НИГДЕ. Я уже ничего не говорю о php в шаблонах, но когда стили прописывают прямо там, в <style> в зависимости от условия…это жесть.

    4. Виджеты
    Вот как в functions.php прописан виджет

    /**
     * Register widget area.
     *
     * @link http://codex.wordpress.org/Function_Reference/register_sidebar
     */
    function fashiony_widgets_init() {
    	register_sidebar( array(
    		'name'          => __( 'Sidebar', 'fashiony' ),
    		'id'            => 'sidebar-1',
    		'description'   => '',
    		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
    		'after_widget'  => '</aside>',
    		'before_title'  => '<h1 class="widget-title">',
    		'after_title'   => '</h1>',
    	) );
    }
    add_action( 'widgets_init', 'fashiony_widgets_init' );

    Мне надо вывести возле каждого поста его превью в виджете Recent Posts, ну вот как мне это сделать, когда ни шаблона, ни даже банальной html я не вижу. Куда вставлять это превью? И как его вставить? Просто написать <?php get_the_post_thambnail('my_custom_size_thumb_name'); ?> ?

    Вообщем, у меня серьезные проблемы с пониманием методик реализации простых задач.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Вообщем, у меня серьезные проблемы с пониманием методик реализации простых задач.

    Попробуйте для начала осилить правила форума. В частности п2.

    Автор akakinache

    (@akakinache)

    Спасибо за помощь, в этом вся суть отечественных веток поддержки — «правила, поиск, гугл». Разберусь сам 😉

    в этом вся суть отечественных веток поддержки — «правила, поиск, гугл».

    Да, некоторые «отечественные» пользователи такие — вломился, натоптал, наорал, обиделся, ушел 🙂

    На будущее: правила форума — это правила поведения в сообществе, у которого Вы, на минуточку, просите помощи. Их не соблюдение = неуважение этого сообщества.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Помогите разобраться в underscores» закрыта для новых ответов.