Задать вопрос
  • Почему работает запрос со взаимоисключающими параметрами?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Надо смотреть сам SQL запрос, который получился. Подозреваю, что у вас из-за оператора OR происходит что-то типа "если есть посты по этому tax_query - вернуть их, иначе - стандартные результаты". Могу ошибаться, но без самого SQL запроса дебажить нереально. Установите плагин Query Monitor - все решится за пару минут.
    Ответ написан
    Комментировать
  • Какой правильный workflow по привязке верстки к wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    По слайдеру - лично я использую плагин Advanced Custom Fields Pro. Есть специализированные плагины - загружаете картинки, в нужном месте ставите шорткод и все.
    По всему остальному глобально:
    1. Берете тему underscores.me за основу
    2. Модифицируете главные контейнеры под свою структуру
    3. Делаете полный вывод реальных данных в шаблон
    4. Крутите CSS до полной готовности
    Ответ написан
    Комментировать
  • Как настроить шаблон landing page на wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Читать документацию к шаблону.
    2. Установить чистый WordPress, активировать шаблон, импортировать XML.
    3. Настроить под себя.
    Ответ написан
    Комментировать
  • Как запретить авторизацию на сайте wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Спрятать панель для не-админов.
    function my_hide_adminbar () {
        if( !current_user_can( 'administrator' ) ) {
            show_admin_bar( false );
        }
    }
    add_action( 'init', 'my_hide_adminbar' );

    2. Для не-админов закрыть доступ в админку (редирект на главную или 404), но аккуратно - там надо еще проверять аякс, ибо все аякс запросы идут через админку, даже для неавторизованных юзеров. Проще всего просто редиректить:
    function my_no_admin_access() {
        if( !current_user_can( 'administrator' ) ) {
            wp_redirect( home_url() );
            die();
        }
    }
    add_action( 'admin_init', 'my_no_admin_access', 1 );

    3. При необходимости также закрыть доступ к странице регистрации или куда еще надо.

    Код под все это на первой странице гугла.
    UPD: Добавил примеры кода.
    Ответ написан
  • Динамический контент на страницах, wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если цитат много - приватный тип записи (исключить из видимости поиска), выводить програмно. Если не очень много - Advanced Custom Fields. Делается Options Page и в нее Repeater Field, создаете столько цитат, сколько нужно.
    Ответ написан
    Комментировать
  • Есть ли бесплатный хостинг sql?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Да у любого адекватного хостера возьмите облачный VPS, тот же Digital Ocean. Подняли сервак, сделали что надо, грохнули. Заплатите по итогу пару копеек.
    Ответ написан
    Комментировать
  • Как сделать главный сайт подсайтом в сети Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    При установке сети в wp-config.php добавляется следующее:
    define('MULTISITE', true);
    define('SUBDOMAIN_INSTALL', false);
    define('DOMAIN_CURRENT_SITE', 'mydomain.com');
    define('PATH_CURRENT_SITE', '/wordpress/');
    define('SITE_ID_CURRENT_SITE', 1);
    define('BLOG_ID_CURRENT_SITE', 1);

    Попробуйте поменять ID в двух последних строчках, ну и в строках 3-4 путь и адрес. Не пробовал, но должно подхватить.
    Ответ написан
    2 комментария
  • Есть ли плагины или какие-нибудь другие способы импортить таблицы из Excel и Word в WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Есть импорт из CSV, из xls/xlsx и doc/docx импорта вы не найдете - его универсальным сделать очень непросто. Такая штука называется уже даже не импорт, а парсинг. У меня с этим добром геморрой не первый месяц - куча таблиц в doc/xls, каждая со своим форматом и структурой (результаты спортивных соревнований и т.д.). Написали парсер, но даже его приходится пилить напильником под каждый отдельный файл. Со временем пришли к тому, что если файл можно экспортнуть нормально в CSV (пусть даже вручную дочистить его) - значит надо делать так, если невозможно - тогда вводить данные вручную, никаких импортов и парсингов.
    Можно ли написать универсальный парсинг? В целом, скорее да. Но бюджета на это не хватит.

    p.s.: это не проблема/ограничение WordPress, это вообще в целом.
    Ответ написан
    Комментировать
  • Как в Wordpress вывести все кроме последней добавленной записи?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    О, боги! Когда же вы научитесь читать документацию :)

    function my_exclude_latest_post( $query ) {
        if ( $query->is_main_query() ) {
            $query->set( 'offset', '1' );
        }
    }
    add_action('pre_get_posts', 'my_exclude_latest_post');


    Объяснение:
    1. Создаем функцию, модифицирующую глобальный объект $query
    2. Проверяем, чтобы это был основной запрос/луп
    3. Устанавливаем значение аргумента offset, чтобы пропустить N постов (в нашем случае 1)
    4. Хукаем функцию в pre_get_posts (выполняется непосредственно перед выборкой постов из базы)

    Все это есть на странице документации класса WP_Query
    В случае проблем с постраничной навигацией (а при бездумном использовании query_posts() и прочих костылей это вполне реально) - читаем тут.

    И в очередной раз умоляю, перестаньте использовать query_posts() где попало! Особенно вместо основного лупа.
    Ответ написан
    7 комментариев
  • Как сделать вход в админку прямо с сайта?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ну когда же люди научатся читать документацию :)

    codex.wordpress.org/Function_Reference/wp_login_form

    Если кратко:
    1. В нужном месте шаблона пишем:
    <?php wp_login_form(); ?>
    2. Профит!

    Если задача сразу перекидывать в админку, добавляем аргумент:
    'redirect' => site_url( '/wp-admin/' )

    Если задача давать доступ в админку только админам, а остальным нет (перекидывать на главную, например), в functions.php добавляем:
    function no_admin_access() {
        if( !current_user_can( 'administrator' ) ) {
            wp_redirect( home_url() );
            die();
        }
    }
    add_action( 'admin_init', 'no_admin_access', 1 );
    Ответ написан
    Комментировать
  • Вендорные префиксы умерли?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вопрос не совсем корректно сформулирован :)
    Сами по себе префиксы не умирали. Старые версии браузеров не стали вдруг поддерживать эти свойства без префиксов. Изменилась лишь доля рынка у свежих и адекватных браузеров, следовательно, нет необходимости использовать префиксы. Концептуально не поменялось ничего, лишь наш с вами выбор - какие минимальные версии браузеров мы поддерживаем при разработке сайта.
    Ответ написан
    Комментировать
  • HTML5 как сделать правильный каркас?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    HTML 5, если уж так по-новомодному цепляться к этой магической цифре 5, строится в первую очередь вокруг семантики. Семантика выплывает из контекста, создаваемого контентом. Поэтому без понимания того, какой у вас контент этой страницы, все советы будут достаточно абстрактны. Разберитесь с блочными, строчными, и особенно секционирующими элементами. Разберитесь с семантической нагрузкой на элементы. А если совсем кратко, примитивная структура:
    header
    nav
    article
      header
      ... основной контент ...
      footer
    aside
      ... второстепенный контент ...
    footer

    или
    header
    nav
    section
      article
        header
        ...
        footer
      article
        header
        ...
        footer
    section
      header
      ...
      footer
    footer
    Ответ написан
    Комментировать
  • Wordpress. Есть ли темы с сюрпризами?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ваши эти "неофициальные источники" - это тупо стыренные и/или хакнутые платные шаблоны и плагины. Неужели вы наивно думаете, что есть какой-то добрый робингуд, который покупает их за свои деньги, а потом раздает всем желающим бесплатно, просто так? Нет, этот робингуд вшивает туда бекдоры и прочую ерунду, чтобы потом на таких наивных людях зарабатывать. Качать темы и плагины можно с родного сайта, с известных площадок с надежной проверкой кода перед публикацией продуктов (envato, creativemarket и тому подобные), а также у тех авторов, кто имеет хорошую репутацию и точно не станет заниматься подобной чепухой. В остальном - на свой страх и риск, проверять код вручную.
    Ответ написан
  • Как Polylang затавить загружать при смене языка и главную страницу на Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У полиланга есть полезная функция pll_current_language().
    Можно вот так:
    if( 'ru' == pll_current_language() ) :
        // загрузить русскую страницу
    else :
        // загрузить английскую страницу
    endif;

    Но вообще разумнее наверное делать как пишет Андрей. Надо вникать с суть задачи, а мне лень :)
    Ответ написан
    2 комментария
  • Как запретить отображение части сайта для определенной группы Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Самый простой способ:
    if( is_user_logged_in() ) :
        echo '<a href="'.site_url().'/profile/">Profile</a>';
    else :
        echo '<a href="'.site_url().'/wp-login.php">Login</a>';
    endif;
    Ответ написан
    Комментировать
  • Как сделать форму для заполнения с готовыми вариантами в Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ответ написан
    Комментировать
  • Wordpress php код - Как исправить?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Александр Зеленин дело говорит. query_posts - это утилитная функция, ее в этом случае юзать не стоит. Оптимально - хук в pre_get_posts, установить нужные параметры (категория, количество постов на страницу), тогда стандартный луп (WP_Query) сам по себе выдаст нужный результат, и больше ничего править не надо.
    Ответ написан
    Комментировать
  • Откуда растут ноги у "блока" в шапке сайта?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Этот блок генерит плагин Nivo Slider. Убрать его целиком - надо ручками править код плагина, скорее всего. Самый простой способ - дописать в CSS следующий блок:

    .nivo-controlNav { display: none; }
    Ответ написан
    4 комментария
  • Почему не меняется контент при смене страниц?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В запросе идет 'post_type' => 'news', а далее вы говорите о таксономии news. Где логика? Бардак получается)

    Таки используйте стандартный цикл, хукайтесь в pre_get_posts. В крайнем случае используйте new WP_Query. query_posts() - весьма специфический зверь, который предназначен только для определенных ситуаций. Ваша - не одна из них.

    Что это за шаблон? category.php? index.php? single.php? Советую при разработке устанавливать плагин Query Monitor, он покажет как WordPress распарсил и обработал запрос, какой шаблон загрузил. Как вы живете без дебага? Я не говорю об xdebug, но хотя бы WP_DEBUG = true и Query Monitor должны быть.
    Ответ написан
    Комментировать