Ответы пользователя по тегу WordPress
  • Как узнать предыдущую страницу в 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

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

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Внимательно посмотрите на регулярку слева, и на маппинг справа:
    (.?.+?)(?:/([0-9]+))?/?$ -> index.php?pagename=$matches[1]&page=$matches[2]


    Это - основное правило (rewrite rule) для страниц WordPress. Как оно работает:

    - /page-name/ - страница первого уровня
    - /page-name/sub-page-name/ - страница второго уровня (дочерняя, вложенная)
    - /page-name/sub-page-name/sub-sub-page-name/ - страница третьего уровня (и это не предел)

    В этих случае маппинг выдаст, соответственно:
    pagename=page-name
    page=
    
    pagename=page-name/sub-page-name
    page=
    
    pagename=page-name/sub-page-name/sub-sub-page-name
    page=


    и WP_Query будет запрашивать такие страницы. В вашем случае страница uslugi/asdfdsf, как дочерняя страницы uslugi – не существует. Отсюда и 404, все логично. Вот пример:

    5a134b88e6c47515219426.jpeg

    Если же ввести число, сработает другая часть регулярки:

    - /page-name/123/

    будет замаплен в:
    pagename=page-name
    page=123


    Чувствуете разницу? Вторая переменная, $page теперь заполнилась. Это нужно для разбивки контента страницы. WordPress позволяет вам разместить на странице какой-то длинный текст/контент, и разбить его на странички. Именно эта часть регулярки отвечает за постраничный вывод.

    Но поскольку в сам WP_Query отправляется запрос на получение контента страницы целиком, а постраничная разбивка происходит уже на лету, то и ответ 200 вполне логичен. Как и вывод одного и того же контента, независимо от номера страницы.

    Вот пример такого запроса. Обратите внимание на установленные переменные:

    5a134cea181ae872567841.jpeg

    Так работают стандартные rewrite rules WordPress. Что делать? Можно хукнуться в один из ранних хуков, например template_redirect, проверить контент на предмет постранички, и сделать редирект на 404. Но, зачем?
    Ответ написан
    5 комментариев
  • Почему не выводится текст из Advanced Custom Fields?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    2й, необязательный параметр функции the_field() - ID объекта (записи). Если его не передавать, то функция будет использовать ID записи, которая в момент вызова находится в глобальной переменной $post. А вот там как раз в этот момент может находиться совершенно не то, что вы думаете. Отсюда и пустое значение - функция пытается взять значение этого поля у записи, у которой этого поля вообще нет. Не у той записи, которая вам нужна.

    У вас вызов the_field() идет в цикле (который WordPress Loop) или нет?
    Ответ написан
    Комментировать
  • Не загружаются файлы (изображения, виджеты и т д) на вордпресс под MAC OS?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Проблема с пользователями. Посмотрите тут: dustinbolton.com/wordpress-xampp-on-mac-update-per...
    Ответ написан
    Комментировать
  • Как создать связку собственных таксономий с товарами в Woocommerce?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вариант 1 - используйте product attributes. Они для этого и существуют.
    Вариант 2 - регистрируйте свои таксономии и привязывайте их к товарам с помощью register_taxonomy_for_object_type()
    Ответ написан
    1 комментарий
  • Как экспортировать контент полей плагина ACF wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Контент хранится как обычные метаданные, в таблице wp_postmeta, с привязкой по post_id к конкретным записям. Это если ваши поля ACF для записей. Если это options pages и таксономии, то в таблицах wp_options и wp_termmeta соответственно.

    Сам плагин позволяет экспортировать поля и группы полей, то есть "структуру". Контент находится уже за рамками плагина. По сути плагин - это всего лишь интерфейс для этого контента. Впрочем, можете написать свой собственный экспорт, ничего сложного в нем нет. Получаете список полей, далее забираете по их названиям данные из соответствующих таблиц БД и сохраняете в удобном формате.
    Ответ написан
    Комментировать
  • Postcss-modules как лучшая альтернатива bem?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Во-первых, при чем здесь WordPress?
    Во-вторых, если уж речь за WordPress, то он в некоторых местах свои собственные классы добавляет. Это надо учитывать.
    В третьих, я бы за такие классы, которые данный пакет генерит, руки открывал.
    В четвертых, а какой профит, особенно для лендинга где по умолчанию все классы будут использованы на одной и той же странице?
    В пятых, с bem можно вообще не париться, это всего лишь одна из методологий / naming conventions.
    Ответ написан
    2 комментария
  • Какой файл в теме wp отвечает за вывод новостей? И как создать ссылку на эту страницу?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    По первому вопросу даже лень шутку какую-то писать. По приведенной вами же ссылке все подробно расписано. Перечитывайте до тех пор, пока не вкурите.

    Что касается второго вопроса

    надо вывести ссылку на страницу со всеми новостями (она не обязательно главная)


    <a href="<?php echo get_post_type_archive_link( 'post' ); ?>">Все новости</a>


    Если же у вас назначена статичная страница как архив блога (так же как вы назначаете статичную страницу главной):

    <a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Все новости</a>
    Ответ написан
    3 комментария
  • Почему не записываются дынные в бд?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Что это такое?
    if ($result = 'true')
    Во-первых, вы сравниваете со строчным значением 'true', а не булевым true.
    Во-вторых, вы не сравниваете, а присваиваете. Присваиваете переменной $result строчное значение 'true', что всегда будет возвращать булевое true, независимо от того, что содержалось в переменной $result до этого (вы перезаписали ее значение). Таким образом, у вас всегда сработает if (а не else), независимо от результата выполнения mysql запроса. В комментариях oxidmod вам подсказал правильно:
    //if ($result = 'true'){
    if ($result){
        echo "Информация занесена в базу данных";
    }else{
        //echo "Информация не занесена в базу данных";
        echo "Информация не занесена в базу данных: " . mysql_error();
    }


    Это что касается сюрприза и несбывшихся ожиданий. Что касается того, почему mysql не создает запись... Во-первых, mysqli. Во-вторых, в WordPress есть $wpdb.
    Ответ написан
    4 комментария
  • Можно ли как то через css менять размер изображений и выводимые файлы?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Какой размер изображения выводить определяется на сервере. Это делает PHP.
    Как его отображать (в оригинальном размере, уменьшить визуально, растянуть визуально, добавить рамку и отступы и тд) определяется на клиенте (в браузере) с помощью CSS.

    Это разные вещи. Мухи отдельно, котлеты отдельно.
    Ответ написан
  • Каким образом Wordpress понимает, какие стили применять к меню?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    WordPress генерирует меню с рядом более-менее стандартных классов. Есть достаточно высокие шансы, что в текущей теме (в CSS) они прописаны. Вот и весь секрет. Список стандартных классов можно посмотреть тут:

    https://developer.wordpress.org/reference/function...
    https://gist.github.com/madalinignisca/5568192
    www.wpbeginner.com/wp-themes/default-wordpress-gen...

    В гугле материалов сильно больше.
    Ответ написан
    Комментировать
  • Как сделать редактор произвольных полей?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Advanced Custom Fields или любой другой аналогичный плагин.

    Мне нужно решение без плагинов!

    Ну так вам придется писать свой "плагин" по сути. А работы тут немало:

    - регистрация метабокса(ов)
    - создание views (html внутри этих метабоксов, собственно сами формы и их поля)
    - при создании полей чуть сложнее чем просто текст - стилиация, интеракция (js) и взаимодействие с WP и данными (поиск, подгрузка и тп)
    - обработчик формы
    - валидация входящих данных
    - запись/обновление данных

    Установите плагин, который уже решил все эти вопросы, да еще и предоставляет уже красивый и удобный UI.
    Ответ написан
  • Как отображать рубрики и записи в мультисайте WORDPRESS?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    надо отобразить на поддоменах сайта рубрики и записи основного домена


    switch_to_blog():

    switch_to_blog( $blog_id );
    
    // получили рубрики, страницы и тд
    
    restore_current_blog();
    Ответ написан
  • Как сделать аудиоплейлист на Wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Нажмите в записи кнопку "Media" и переключитесь на вкладку Аудио-плейлист:

    5a0c832f56a7f351714637.jpeg

    Загрузите файлы и далее следуйте настройкам. Это выведет вам плейлист в стандартном плеере. Все остальное - уже кастомизация.
    Ответ написан
  • Как удалить циклические ссылки в меню?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Не совсем понятно что такое циклические ссылки в данном контексте. Но в любом случае, строчка:
    'walker' => new Aletheme_Nav_Walker(),
    как бы явно намекает, что менюшка строится кастомным вокером. Открывайте класс Aletheme_Nav_Walker и смотрите, что там.
    Ответ написан
    Комментировать
  • Как сделать редирект с custom post wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ответ Александр правильно решает сам редирект. А вот как определить автоматически куда редиректить - это другой вопрос. Вставка у вас идет в контент через шорткод, значит малой кровью (разумными ресурсами) вытащить эти данные из БД не получится.

    Как я бы сделал - на сохранение страницы повесил бы функцию, которая парсила бы шорткод и залинкованным записям произвольного типа дописывала бы метаданные 'linked_on_page_id'. Таким образом автоматически записи произвольного типа будут получать привязку к ID страницы, где они залинкованы. А уже в самом редиректе я бы брал это значение из метаданных и отправлял редиректом через get_permalink.

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

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Админ-бар добавляется с position fixed, и переключается в position absolute при ширине менее 600px, z-index при этом равен 99999. Конфликт с вашим абсолютно спозиционированным меню неизбежен. Решение есть - WordPress в случае отображения админбара дописывает в body произвольный класс. Таргетируйте меню через этот класс и дописывайте разницу для значения top. Вот вам подробный материал на эту тему.
    Ответ написан
    Комментировать
  • Wordpress. Как обернуть блок со статьей в ссылку на эту статью?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    ...
    echo '<div class="col-md-4 col-sm-6 item box-hidden">
        <a href="' . get_the_permalink() . '">
            <div class="post-img">' . get_the_post_thumbnail() . '
                <div class="cat-name">' . get_the_category_list(',') . '</div>
            </div>
            <div class="post-description">
                <h3>' . get_the_title() . '</h3>
                <div class="post-meta">
                    <span class="date">' . get_the_date('j F') . '</span>      
                    <span class="comment-number"><i class="fa fa-comment-o" aria-hidden="true"></i> ' . get_comments_number() . '</span>
                </div>
            </div>
        </a>
    </div>';
    ...
    Ответ написан