Ответы пользователя по тегу WordPress
  • Какой плагин лучше использовать для показа скидок?

    trampick
    @trampick
    Веб-разработчик
    Зачем плагин? у woocommerce есть встроенная функция старой и новой цены. Вам нужно лишь отредактировать 2 шаблона для карточки товара в каталоге и для одиночной карточки товара.
    Эти файлы должны находится у вас в папке с темой:
    woocommerce/loop/sale-flash.php - для каталога
    woocommerce/single-product/sale-flash.php - для одиночной карточки

    Что бы выводился %, а не просто слово скидка(по умолчанию) нужно модернизировать в таком виде скрипт:
    if (!defined('ABSPATH')) {
        exit; 
    }
    global $post, $product;
    $id = $product->id;
    if ($product->is_on_sale()) {
        $price = get_field('_price', $id);
        $regular_price = get_field('_regular_price', $id);
        ?>
        <span class="sale"><span><?php echo round(100 - ($price / $regular_price) * 100); ?>%</span></span>
        <?php
    }
    Ответ написан
  • Какой есть плагин «собственных» share-кнопок для Wordpress?

    trampick
    @trampick
    Веб-разработчик
    Есть замечательный плагин AddToAny Share Buttons. В настройках можно указать определенные соц сети. Можно указать после каких типов записей выводить. есть возможность использовать шорткоды.
    Ответ написан
  • Есть ли разница для счетчика liveinternet зашел ли посетитель по http или https?

    trampick
    @trampick
    Веб-разработчик
    Для примера у нас был сайт на http и была установлена yandex метрика. После того как мы установим https нам надо будет поменять url на https, иначе метрика не будет работать. Если хочешь что бы там и там работал скрипт, нужно в зависимости от протокола сайта подставлять в путь к скрипту нужный протокол.

    В итоге протокол сайта и протокол urlа к скрипту должен быть одинаковым.
    Ответ написан
    Комментировать
  • Как изменить permalink для определенной категории в WordPress?

    trampick
    @trampick
    Веб-разработчик
    Создай страницу с урлом "мойсайт.ру/супер-пост/" . Для этой страницы сделай шаблон, в котором сделай вывод нужной информации через wp_query();
    Ответ написан
    Комментировать
  • Как сделать сайдбар в блоге плавающим?

    trampick
    @trampick
    Веб-разработчик
    Создай в html
    <aside class="sidebar" role="navbar">
    </aside>

    Туда размещай свой код.

    В css добавь стили:
    aside.sidebar{
       position: fixed;
        top: 0;
        height: 100%;
        right: -250px;
        width: 250px;
        background-color: #4f5a6e;
    }

    Все!
    Ответ написан
    Комментировать
  • Отображение постов с определенной таксономией в Wordpress?

    trampick
    @trampick
    Веб-разработчик
    я бы создал главную родительскую категорию новой таксономии. Остальные категории были бы дочерние этой категории.
    -По урлу site.com/taxonomy я бы через add_rewrite_rule() сделал вывод главной категории(якобы такую подмену).
    -Минус такого подхода что по двум урлам site.com/taxonomy и site.com/taxonomy/mainCat выводится один и тот же контент. Плюс есть момент, что в хлебных крошках(если использовать плагин) будут отображаться на то и на другое ссылки.

    !Другой подход через add_rewrite_rule() site.com/taxonomy сделать подмену на определенную страницу. В шаблоне этой страницы сделать вывод всех постов через wp_query.
    Ответ написан
    Комментировать
  • Почему не отображаются внутренние страницы Wordpress?

    trampick
    @trampick
    Веб-разработчик
    В корне сайта, где лежит index.php должен находится файл .htaccess
    Он содержит стандартные строчки
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    Ответ написан
  • Как преобразовать значение GET параметра в url?

    trampick
    @trampick
    Веб-разработчик
    Вам нужен такой кусочек кода
    add_action('init', 'addMyRewrite');
    
    function addMyRewrite() {
        add_rewrite_rule('news/page/([^/]*)/?$', 'index.php?pagename=news&paged=$matches[1]', 'top');
        global $wp_rewrite; //закоментить после настройки  add_rewrite_rule
        $wp_rewrite->flush_rules(); //закоментить после настройки  add_rewrite_rule
    }

    Вам нужно настроить правильно параметры функции add_rewrite_rule под свои нужны.
    $wp_rewrite->flush_rules() - очищает кэш перенаправлений.
    Ответ написан
  • Как вывести разное количество продуктов в разных категориях?

    trampick
    @trampick
    Веб-разработчик
    Изменить количество товаров выводимых на странице можно такой строчкой кода:
    add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 24;' ), 20 );

    по 24 товара будет выводится.
    Вам лишь надо добавить условие. Это можно сделать несколькими способами:
    -отслеживать $_SERVER['REQUEST_URI'] и по определенным урлам вместо 24 подставлять нужное значение.
    - узнавать id текущей категории. Смотреть есть ли у нее дочерние категории, то выводить одно значение, если нет то другое.
    Ответ написан
    7 комментариев
  • Ошибка при открытии сайта в openserver, как исправить?

    trampick
    @trampick
    Веб-разработчик
    Ошибка вызвана тем, что при переносе некоторый файлы были потеряны или повреждены!
    Ответ написан
    Комментировать
  • Как в woocommerce изменить цену продукта в зависимости от текущей даты?

    trampick
    @trampick
    Веб-разработчик
    Я делал похожую вещь. В зависимости от количества товара в корзине менял цену за единицу. Я примерно опишу что и где нужно сделать для этого.
    1. Шагом это надо создать произвольные поля для товаров с различными ценами - у Вас это вроде бы сделано. Сам я использую плагин ACF для добавления произвольных полей.
    2. Надо в functions.php создать функцию, которое будет возвращать какую цену надо выводить. Пример функцииb:
    function get_type_price(){
      $date = date('d.m.Y');
      if ($date == 'что то там') 
       return 2.
      if ($date == 'что то там') 
       return 3.
      return 1;
    }


    3. Дальше есть как минимум 2 варианта развития: простой и сложный.

    Сложный (более гибкий):
    - нужно поменять во всех шаблонах WC вывод цены. Добавить условие типа:
    if (get_type_price() == 1) //делать что то
    if (get_type_price() == 2) //делать что то
    if (get_type_price() == 3) //делать что то

    - нужно разобраться как работает class-wc-cart.php и переработать его в свою пользу:)) Суть в том что бы корзина правильно считала скидки, доставки. Что бы отправлялись письма с правильным списком товаров и т.д.
    т.е. меняя просто вывод цены в шаблоне не достаточно.

    Простой (подходит для Ваших условий)
    - по умолчанию у товара WC есть свои произвольные поля цены: _price, _regular_price и т.д.
    Нужно добавить условие типа
    if (get_type_price() == 2) {
      update_post_meta(get_the_ID(), 'price', get_post_meta(get_the_ID(), 'second_price', true));
    }
    Ответ написан
  • Как сделать пункт меню не кликабельным, если он содержит подпункты?

    trampick
    @trampick
    Веб-разработчик
    Если вы используете стандартные средства WP меню и вывод его, то в выводимом коде меню у li имеющих дочерние элементы будет класс menu-item-has-children.
    Нужно через js отменить действие вложенной ссылки.
    $('li.menu-item-has-children > a').click(function(e) {
      e.preventDefault();
      return false;
    });

    Если используется какой-то нестандартный способ вывода, то скрипт надо модернизировать.

    Так же как вариант в админке где создаешь меню использовать произвольные ссылки, и вместо ссылки вставлять #
    Ответ написан
    Комментировать
  • Перенос Wordpress + Woocommerce, могут ли быть проблемы?

    trampick
    @trampick
    Веб-разработчик
    Я всегда очень просто справляюсь с этой задачей в несколько шагов:
    1. Сделать архив сайта и перенести в новую директорию нового домена.
    2. Сделать sql дамп базы данных. Затем заменить в нем все вхождения старого домена на новый через notepad++.
    3. Загрузить дамп в новую бд.
    4. Вписать данные от новой бд в файл wp-config.php

    Если сайт был правильно разработан, то все заработает ок. Редко бывают какие то проблемы.
    Ответ написан
    2 комментария
  • Плагин Wordpress с переходом по меткам на карте?

    trampick
    @trampick
    Веб-разработчик
    Используйте yandex конструктор карт. Там можно настроить как Вам нужно не имея навыков программирования. Конструктор выдаст готовый скрипт, который можно либо вставить в контент (текстовый редактор), либо в шаблон сайта.
    Ответ написан
    Комментировать
  • Как сделать мультистраничный сайт на WordPress?

    trampick
    @trampick
    Веб-разработчик
    Во- первых вам нужна функция add_rewrite_rule(). Вам нужно по определенной маске url выдавать определенный пост, указывая доп. параметр части url по которой индефиц. заголовки.
    add_action('init', 'addMyRewrite');
    function addMyRewrite() {
        add_rewrite_rule('^leaf/([0-9]+)/?', 'index.php?page_id=$matches[1]', 'top');//тут надо вставить свои данные
        /* Для того что бы обновить кэш используйте такую конструкцию. После того как правильно настроите   add_rewrite_rule нужно отключить 2 нижние строки.*/
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
    }

    Это поможет Вам выдавать по разным урлам один и тот же пост с одинаковым шаблоном.

    Во-вторых для вывода разных заголовков можно использовать custom fields, но я бы советовал просто в шаблоне создать массив, где ключом является доп. параметр, а значением заголовок. Ну и выводить заголовок.

    Так же что бы добавить доп. параметр в get_query_var Вам нужно использовать конструкцию
    add_filter( 'query_vars', function( $vars ){
    	$vars[] = 'доп. параметр';
    	return $vars;
      } );
    //этот фильтр нужно добавить в функцию addMyRewrite()
    Ответ написан
    Комментировать
  • Как подключить 2 сайта на wordpress к одной БД?

    trampick
    @trampick
    Веб-разработчик
    Можно использовать 1 базу и 1 набор файлов для нескольких доменов. Т.е. я к примеру для мобильной и основной версии сайта использую одну и ту же тему с одной и той же бд. Во всех файлах шаблона стоит условие для вывода верстки и данных для мобильной версии и для основной.

    Возможно Вам подойдет такой способ. Тогда нужно проделать примерно такой набор действий:
    1) Настроить на сервере, что бы по другому домену обращение было к той же директории, что и у основного домена. Пусть у нас будет основной домент site.ru, а для теста test.site.ru
    2) в wp-config.php добавить такой скрипт
    if ($_SERVER['HTTP_HOST'] == 'test.site.ru') {
        define('WP_HOME', 'http://test.site.ru/');
        define('WP_SITEURL', 'http://test.site.ru/');
    }

    3) добавить в functions.php
    function is_testsite() {
        if ($_SERVER['HTTP_HOST'] == 'test.site.ru') {
            return true;
        } else {
            return false;
        }
    }

    4) в нужных файлах темы использовать конструкцию типа:
    if ( is_testsite()) {
    //вывод для test.site.ru
    } else {
    //вывод для site.ru
    }

    5) Вроде бы все:)
    Ответ написан
    Комментировать
  • Как сделать ссылки не кликабельными?

    trampick
    @trampick
    Веб-разработчик
    Можно так:
    Заменить
    $tags[] = ' <a href="'.get_term_link( $tag ).'" title="' . esc_attr( sprintf( __( "View all posts tagged %s", LAYERS_THEME_SLUG ), $tag->name ) ) . '">'.$tag->name.'</a>';

    На
    $tags[] = ' <a href="'.get_term_link( $tag ).'" onclick="return false" title="' . esc_attr( sprintf( __( "View all posts tagged %s", LAYERS_THEME_SLUG ), $tag->name ) ) . '">'.$tag->name.'</a>';
    Ответ написан
    Комментировать
  • Как проще сделать, чтобы сообщения об отправке(или не отправке) формы отображались в модальном(pop-up) окне в contact-form 7, Wordpress?

    trampick
    @trampick
    Веб-разработчик
    При создании формы в contact form 7 у формы есть вкладка дополнительно. В этой выкладке можно прописать вызов ajax функций для каких либо событий формы(ошибка отправки, успешная отправка и т.д.).
    Например пишем туда
    on_sent_ok: "my_popup_success_show();"

    В своем скрипте нужно создать функцию my_popup_success_show() которая открывает модальное окно.

    Это не конкретное решение, а лишь направление для движения.
    Ответ написан
    2 комментария
  • Кастомный тип записи не разбивает текст на абзацы, выдает прост полотно. Как исправить?

    trampick
    @trampick
    Веб-разработчик
    Используй фильтр apply_filters('the_content', переменная).
    Например,
    <?php
      echo apply_filters('the_content', get_the_content());
     ?>

    или
    <?php
      echo apply_filters('the_content', get_the_excerpt());
     ?>

    или
    <?php
      echo apply_filters('the_content', get_field('myfield'));
     ?>
    Ответ написан
  • Почему не работают скрипты из внешнего файла?

    trampick
    @trampick
    Веб-разработчик
    Скину скрипт, который я обычно пишу для подключения
    add_action('wp_print_styles', 'add_my_stylesheet');
    
    function add_my_stylesheet() {
        $path = get_bloginfo('template_directory') . "/"; //Получаю url к папке с темой
        wp_register_style('themeStyle', $path . 'style.css');//Регистрирую таблицу
        wp_enqueue_style('themeStyle');//включаю
    }
    
    add_action('wp_enqueue_scripts', 'add_my_scripts');
    
    function add_my_scripts() {
        $path = get_bloginfo('template_directory') . "/";//Получаю url к папке с темой
        if (!is_admin()) {//если не в админке
            wp_deregister_script('jquery');//Убираем вывод jquery, rкоторый идет с WP
            wp_register_script('jquery', ($path . "js/jquery-1.11.3.min.js"), false, '1.11.3');//Регистрируем свой jquery
            wp_enqueue_script('jquery');//Включаем его
        }
        wp_register_script('commonJS', ($path . "js/common.js"), array('jquery'));//Регистрируем свой скрипт, и указываем что для него необходим скрипт jquery
        wp_enqueue_script('commonJS');//Включаем скрипт
        wp_localize_script('commonJS', 'myajax', array(//Это способ передачи php значение в js.Т.е. перед выводом commonJs создадутся js переменные.
            'url' => admin_url('admin-ajax.php'),
            'nonce' => wp_create_nonce('myajax-nonce'),
                )
        );
    }

    У тебя не хватает wp_register_style и wp_enqueue_script перед включением таблицы и скриптов. Скорее всего дело в этом. Следующий момент может быть что нужно стандартный jquery заменить на свой.
    Ответ написан