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

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Создаем сам шаблон вида page-произвольное_имя.php

    Нет, вы немножко запутались. Если называть page-{your-page-slug}.php, то это динамический шаблон, который будет использоваться согласно иерархии шаблонов и будет использован для страницы со слагом 'your-page-slug' (например, у вас есть страница example.com/contact-us, шаблон для нее будет page-contact-us.php).

    А если вы используете именно Page Template, определяя его в комментарии в шапке шаблона, то название файла не имеет совершенно никакого значения. Я их всегда помещаю в папку templates или называю tmpl-your-custom-template-name.php

    Что касается почему вы их не видите - в последней версии WP выпадающий список шаблонов кешируется, поэтому новые шаблоны появляются не сразу. Пока что не совсем понятно - это баг или фича. Ссылки на тикеты уже дал Maksym
    Ответ написан
    2 комментария
  • Получить список выполняемых action и filters?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Сделайте себе один из лучших возможных подарков к Новому Году - выделите 1 день на то, чтобы установить и настроить Xdebug, научиться работать с ним в вашем IDE (очень рекоммендую PhpStorm), и использовать все возможности этого отладчика. Это кардинально изменит то, как вы программите.

    Пожалуйста.
    Ответ написан
    Комментировать
  • Как добавлять и удалять отдельный пункт меню в зависимости от разрешения экрана динамически?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    В принципе, у WordPress есть полезная функция wp_is_mobile(), которая возвращает булевое true/false. Она разделяет десктопы и мобильные устройства (планшеты, смартфоны). И это происходит на стороне PHP, то есть – на сервере. Впрочем, в вашем случае лучше решать с помощью CSS и media queries.
    Ответ написан
  • Почему тормозит SELECT запрос (выполняется 0.5 сек)?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вообще по поведению похоже на обычную работу кеша. Данные обновились, кеш инвалидируется и холодный запрос занимает 0,5с. После его выполнения результат кешируется, поэтому последующее выполнение запроса происходит "мгновенно". Грубо говоря, 0,5с - это и есть реальное время выполнения этого запроса. Вот только почему у вас нету такого с wp_postmeta - вот это уже интересно.
    Ответ написан
    3 комментария
  • Нагрузка на Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Количество записей не имеет особого значения. И 300к записей - это не много.
    2. Если у вас много фильтров (а значит много метаданных и поиск надо делать по ним) - используйте ElascticSearch + ElasticPress.
    Ответ написан
    Комментировать
  • Как сделать на wordpress функцию get_posts?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Функция get_posts() является оберткой для WP_Query. Соответственно, все аргументы надо смотреть там. Аргумент 'title' должен быть строкой, а вы ему массив передаете. Поэтому он его и не понимает (и не должен). И больше одного title он тоже не поймет, ибо строка. Поэтому "элементов там может быть несколько" - не совсем понятно о чем вы и чего пытаетесь добиться.

    Я так подозреваю, что $_POST['choice'] это у вас из селекта прилетает. Так вот, я б на вашем месте в value тега option в селекте этом подставлял ID записей, а не title. Тогда их множественно можно забирать.

    Но из вашего описания сложно понять что именно вам надо. Отсюда - одни догадки. Опишите задачу более детально.
    Ответ написан
    Комментировать
  • Как сохранять большое количество продуктов в wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Я бы запилил через CLI, сам скрипт может быть и на PHP, или как расширение для WP-CLI. Им брал бы по одной записи из АПИ, записывал в WP/WC через REST API и писал подробности в лог. Отдельно написал бы простой аггрегатор / просмотрщик лога, чтобы удобно было смотреть результаты. А дальше запустил бы это все и ушел спать. В дальнейшем другой CLI-скрипт на кроне, который бы сверял данные между сторонним АПИ и WP/WC и синхронизировал данные с помощью первого скрипта.
    Ответ написан
  • Отображение анонсов статей на главной?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Несколько дней назад отвечал на аналогичный вопрос.

    Кратко суть:

    1. Если у вас страница назначена как главная, глобальный (основной) WP_Query будет содержать данные этой страницы (это у вас сейчас).
    2. Если страница не назначена, то глобальный WP_Query будет содержать последние записи (так у вас было раньше и они выводились).
    3. Лечится произвольным WP_Query и циклом для вывода анонсов. По ссылке есть ссылка на документацию с примерами, также гуглите wordpress secondary loop или wordpress вторичный цикл.
    Ответ написан
    1 комментарий
  • Ошибка при подключении jquery к теме wordpress, как решить?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Вывод ошибки оформите в теге code, удобнее читать
    2. Добавьте код подключения jQuery-плагина bic calendar и twitter bootstrap.

    Исходя из ошибки, jQuery подкючился и работает. Кроме него, плагину bic calendar нужна еще библиотека twitter bootstrap. Ну и сам плагин, естественно.
    Ответ написан
  • Как вернуть шрифт в админку WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    wp-includes перезалейте
    Ответ написан
  • Как вывести thumbnail?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Функция the_post_thumbnail() работает только внутри WordPress Loop, потому что берет post_id (у какого поста картинку взять) из глобального $post. В вашем случаем используется обычный foreach, глобальный $post не заменяется, поэтому post_id надо передать явно через функцию верхнего уровня:
    echo get_the_post_thumbnail_url( $recet['ID'], 'large', );
    Ответ написан
    Комментировать
  • Почему цыкл в функции Wordpress при обновлении через ajax выводит только последний пост?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    У вас $post_ids скорее всего содержит строку вида 1,2,3. Сделайте из нее массив:

    'post__in' => explode( ',', $post_ids ),
    Ответ написан
    Комментировать
  • Как убрать 'category' из url без плагинов и не через htaccess?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Не советую этого делать, ничем хорошим это обычно не заканчивается. Уже сто раз тут на Тостере спрашивали, делали вопреки рекоммендациям этого не делать, а потом жаловались что что-то не так работает.

    Смотрите в сторону custom post types.

    Если вам нужно разделить записи и новости, то я бы делал стандартные записи (posts) новостями, для этого создал страницу со слагом news, назначил ее как страницу записей, а пермалинки переименовал бы в /news/%postname%/. После этого все новости у вас станут доступны по адресу /news/слаг-конкретной-новости/, а архив всех новостей - /news/. А вот записи (если нужно их использовать для чего-то другого) надо делать как custom post type, со своей произвольной структурой. Либо наоборот, для новостей создаете custom post type, а записи оставляете для чего-то еще.
    Ответ написан
    Комментировать
  • Почему не отображаются записи в цикле?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Главный цикл WordPress (Main/Primary Loop) использует для вывода главный запрос, то есть WP_Query (Main Query). Если главная страница не назначена, то главный запрос будет содержать последние записи. Если вы назначили главной страницу, то этот запрос будет содержать только одну эту страницу и ее контент, вместо записей. Чтобы вывести записи на такой главной странице, вам нужен вторичный цикл (Secondary Loop). Создаете новый запрос с помощью new WP_Query(), передав необходимые аргументы, и выводите вторым циклом. Подробнее об этом есть в документации.
    Ответ написан
    2 комментария
  • Как сделать шорткод с php внутри?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Используйте обычную конкатенацию.
    2. Проблема в том, что the_title() выводит тайтл, а в шорткоде вам нужно возвращать его. Для этого есть get_the_title():
    function shorcode_title( $atts ) {
      return '<p>' . get_the_title() . '</p>'; 
    }
    
    add_shortcode( 'title', 'shorcode_title' );
    Ответ написан
    2 комментария
  • Почему не работает новый созданный шаблон?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Сегодня уже пролетало, в последней версии WP для списка доступных шаблонов добавили кеширование, вплоть до 1 часа. Поэтому новые шаблоны могут появляться в списке не сразу. В данный момент считается багом (я не успел вникнуть в суть) и вроде бы должно быть изменено в лучшую сторону.
    Ответ написан
    1 комментарий
  • Что такое apply_filter в хуках и как используется?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Apply_filters не в хуках, это и есть хук :)

    Если не вдаваться в разъяснения в виде кода (это уже хорошо сделал «Пользователь удалён»), то человеческими словами это работает так:

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

    2. Чтобы дать возможность другим изменить ваше значение, вы оборачиваете его в функцию apply_filters, даете этому фильтру какое-то название (в примере панды - change_vasya_name), и передаете в эту функцию саму переменную, которая содержит ваше значение (Vasya).

    3. Другой разработчик пишет свою функцию, которая подключается к этому фильтру по его имени - add_filter( 'change_vasya_name', $text ) - и эта функция на лету примет на входе то значение, которое определили вы (Vasya), может его заменить/изменить (например, на Petya) и вернуть обратно.

    4. WordPress когда читает код всех файлов собирает все фильтры в одну стопочку, и их коллбеки (см. п. 3) раскладывает тоже по стопочкам, каждому фильтру свои коллбеки. На одном фильтре может быть много коллбеков (функций). Далее он сортирует их по приоритетам и выполняет по очереди. Таким образом, вместо того, чтобы просто взять ваше значение (Vasya) и использовать дальше его, WP посмотрит, есть ли на этом фильтре функции, если да - выполнит их и вместо Vasya уже будет использовать то значение, которое вернет последний фильтр (в нашем случае он один и возвращает Petya).
    Ответ написан
    2 комментария
  • Как узнать какая тема и плагины используются на конкретном сайте на WordPress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    На сайте используется тема с названием wrk. Вангую, что это полностью кастомная тема. Определить просто - открываете инспектор или исходный код, и смотрите пути к статическим файлам. В данном случае путь определяется по favicon:

    5a1534d89d0fe137323488.jpeg
    Ответ написан
    2 комментария
  • Как узнать предыдущую страницу в Woocommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Если WP запускается под ajax-запрос, то в процессе устанавливается константа DOING_AJAX. Также есть функция wp_doing_ajax(), c помощью которой можно проверить - это обычный запрос или ajax. Возвращает булевое true/false.

    Проверяйте, и если ajax - не меняйте значение в сессии.
    Ответ написан
    Комментировать
  • Почему часть функций вордпресс не работает в плагине?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    почему-то часть функций не работает

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

    Пытался подключить wp-config

    Конфиг подключается самим WordPress в самом начале выполнения с помощью require_once. К чему приведет повторное подключение?

    пишет no such file in directory

    Значит путь неправильный.

    путь до дополнения такой: /yogasevera/wp-content/wp-recall/add-on/dop

    Путь должен быть абсолютный, а это - относительный.
    Ответ написан
    Комментировать