• Плагин ACF: как вывести допполе категории на странице shop?

    @mrtall
    PHP Developer
    Скорее всего в the_category_ID( $echo ) не возвращает айди. Второе, стоит использовать функцию get_the_category.
    Но, работает ли так?
    $cat_id        =    $category->term_id;
    $details = get_field('short', 'category_'.$cat_id);
    Ответ написан
    3 комментария
  • Как разделить подкатегории и товары в Woocomerce?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    // Move WooCommerce subcategory list items into heir own <ul> separate from the product <ul>
    add_action( 'init', 'move_subcat_lis' );
    
    function move_subcat_lis() {
    	// Remove the subcat <li>s from the old location.
    	remove_filter( 'woocommerce_product_loop_start', 'woocommerce_maybe_show_product_subcategories' );
    	add_action( 'woocommerce_before_shop_loop', 'msc_product_loop_start', 40 );
    	add_action( 'woocommerce_before_shop_loop', 'msc_maybe_show_product_subcategories', 50 );
    	add_action( 'woocommerce_before_shop_loop', 'msc_product_loop_end', 60 );
    }
    
    //Conditonally start the product loop with a <ul> contaner if subcats exist.
    function msc_product_loop_start() {
    	$subcategories = woocommerce_maybe_show_product_subcategories();
    	if ( $subcategories ) {
    		echo '<ul class="archive-category-wrapper">';
    	}
    }
    
    //Print the subcat <li>s in our new location.
    function msc_maybe_show_product_subcategories() {
    	echo woocommerce_maybe_show_product_subcategories();
    }
    
    //Conditonally end the product loop with a </ul> if subcats exist.
    function msc_product_loop_end() {
    	$subcategories = woocommerce_maybe_show_product_subcategories();
    	if ( $subcategories ) {
    		echo '</ul>';
    	}
    }
    Ответ написан
    2 комментария
  • Как изменить расположение элементов WooCommerce в WordPress?

    Punkie
    @Punkie
    В папке плагина woocommerce есть файл со всеми хуками - woocommerce_hooks.php . Находите в нем отрезок, который отвечает за нужный вам кусок шаблона (в вашем случае woocommerce_single_product_summary), смотрите вызовы add_action.
    У вас они будут как раз такие, как закоментировано в коде выше, то есть:
    @hooked woocommerce_template_single_title - 5
                 * @hooked woocommerce_template_single_price - 10
                 * @hooked woocommerce_template_single_excerpt - 20
                 * @hooked woocommerce_template_single_add_to_cart - 30
                 * @hooked woocommerce_template_single_meta - 40
                 * @hooked woocommerce_template_single_sharing - 50


    В данном случае числа - это последовательность (приоритет) активации action'ов.
    Теперь вам нужно в functions.php вашей темы деактивировать эти action'ы методом remove_action и выполнить их активацию в нужном вам порядке.
    Например, вам нужно, чтобы сначала выводилось название товара, затем краткое описание, затем цена и тд.
    Код будет примерно такой:
    *тут перечисляем все строки с методом remove_action:
    
    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
    ... и т.д.
    
    *Теперь вызываем те же действия по хуку woocommerce_single_product_summary, но в нужной нам последовательности:
    add_action('woocommerce_single_product_summary', 'woocommerce_template_single_title', 5);
    add_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 10);
    add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 15);
    ... и т.д.

    Числовой приоритет вызова обычно делают кратным 5 для того, чтобы можно было потом еще что нибудь впихнуть между вызовами. Например, захотите потом добавить вывод ключевых слов или уникального поля товара между названием и кратким описанием. Тогда приоритет вызова можно будет сделать 6-9 без необходимости заново перебирать весь массив вызова хука.

    Подробнее про понятия hook, action и filter читайте в официальном руководстве: Introduction to hooks: actions and filters
    Ответ написан
    7 комментариев
  • Как редактировать плагин WordPress, чтоб при его обновлении изменения сохранились?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Не слушайте, они не в теме))

    Можно, но при условии ваших знаний и возможностей плагина. Важно усвоить - ядро (файлы) плагина править нельзя. Но у себя воздействовать - можно.

    Итак:

    Смотря что вы подразумеваете под редактированием:

    1. Если css файлы - их редактировать нельзя. Только переопределять. т.е. если есть класс .some в плагине - то вы у себя в подвале подключайте свой css файл, а стиль для .some переносите и пишите там.

    2. если вы говорите о правке перевода, а у автора плагина строки переведены через __() функции - то воспользуйтесь плагинами интернационализации (переводов), или ВП фильтром gettext

    3. Если php файлы, то поинтересуйтесь у автора - есть ли в том месте, где вы хотите поменять, фильтр. apply_filters в коде плагина, а вы воздействуете на него через add_filters (Есть еще экшены (действия) - но они не позволяют изменять. Это триггеры, когда событие произошло).
    Если фильтра в этом месте нет - попросите автора добавить его. Обычно автор заинтересован в том, что его плагином пользуются и внедряет. Но если вам фильтр нужен только для смены текста - то вам вариант номер два, выше. У плагина может быть 500 строк и на каждую строку текста лепить фильтр - маразм.

    4. Автор плагина может ввести и поддерживать функционал шаблонов. Темплейты - например карточка товара, профиль пользователя, одиночная запись и т.д. Такой функционал имеют многие плагины. bbPress, woocommerce. Суть их такова - что вы переносите файл шаблона (например cart.php) в свою тему или внутри папки wp-uploads (каждый плаг по своему реализует) и плагин вначале проверяет наличие такого файла вне своей папки, а потом, если не нашел там, подключает из своей папки. Так вы можете всю нужную верстку и внешний вид под себя переделать.

    5. Много функций внутри плагина висит на хуках (add_action) - например так:
    add_action('some_action', 'some_function', 20);
    где 20 - приоритет выполнения. Так вы можете всю функцию дерегистрировать через remove_action. Например так:
    remove_action('some_action', 'some_function', 20); (приоритет 20 обязательно такой как и при регистрации)
    и потом всю функцию из плагина копируйте к себе (переименуйте) и вешайте на этот же хук и приоритет. Внутри функции уже делайте как вам надо - изменяйте.
    Но этот способ самый зависимый - т.к. вам нужно следить - вдруг в обновлении автор в этой функции внес изменения или устранил уязвимость. Следите через svn или гит.

    Так что варианты есть. А если их еще в плагине нет - попросите автора плагина добавить такую возможность. Если автор плагина не пойдет на встречу - не юзайте такой плагин. Там нет будущего. Большинство программистов понимает что ситуаций много и помогают и внедряют и подсказывают если есть еще способы влияния на нужный участок.
    Ответ написан
    Комментировать
  • Битрикс как вывести название раздела инфоблока?

    Serg89
    @Serg89
    Изучаю. Читаю.
    В настройках компонента, насколько я помню, есть галочки : выводить название раздела/элемента в заголовок. Это должно быть в дополнительных настройках.
    Ответ написан
    3 комментария
  • Стоит ли выносить код в отдельный CSS файл?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Главная причина - не какое-то удобство, не желание соблюдать правила "веб-этикета", а просто кэширование!

    Воссоздадим ситуацию: Есть PHP-файл, страница сайта, которую кэшировать нельзя, так как содержимое меняется в зависимости от не оговоренного фактора. Но, помимо этого содержимого, на странице есть гора всего - стили, js код и т.д. Они, конечно, тоже могут однажды быть отредактированы, но все же, их можно обозвать статическим содержимым.
    Так вот, почему бы не вынести их в отдельные файлы и не указать браузеру на их кэширование - подумали умные люди. Это же сэкономит мегабайты трафика посетителей. Ну и примерно с этого момента у выноса стилей и скриптов в отдельные файлы появился реальный смысл.
    Ответ написан
    Комментировать
  • Как привязать свойства к разделам Битрикс?

    Logic87
    @Logic87
    Программист/администратор сайтов на 1С-Битрикс.
    1. В свойстве: joxi.ru/YmEqylNiZaYJym.jpg
    2. В редактировании раздела указываете что показывать во вкладке "Свойства элементов": joxi.ru/gmvjYM7IxJDdem.jpg
    Ответ написан
    3 комментария