• Как избавиться от пустого цикла без которого ничего не работает?

    godsplane, ну, потому что параметр tag у WP_Query / get_posts должен быть string, а у вас на этих страницах переменной $tags, и тем более свойства $tag->slug нету. Я бы вот так делал:

    // Default args.
    $args = [
        'post_type'   => 'portfolio',
        'numberposts' => 100,
        'orderby'     => 'menu_order',
        'order'       => 'DESC',
    ];
    
    // Tag should be handled on single entry only. 
    if ( is_singular( 'portfolio' ) ) {
        $tags = get_the_tags( get_the_ID() );
        // Make sure tag exists.
        if ($tags) {
            // Pop the last tag.
            $tag = array_pop( $tags );
            // Set 'tag' property of WP_Query.
            $args['tag'] = $tag->slug;   
        }
    }
    
    $lastposts = get_posts( $args );


    В этом случае вы устанавливаете 'tag' в запрос только тогда, когда $tag точно содержит объект WP_Term. В остальных случаях не будет ошибок и WP_Query не будет выполнять лишних телодвижений.

    Кроме этого, у вас в параметрах запроса куча лишнего:
    - suppress_filters и так по умолчанию установлен в true,
    - никогда не используйте в numberposts значение -1, используйте достаточно большое число (например - 100, 500, 1000 - зависит от конкретного случая),
    - category, include, exclude, meta_key, meta_value тут лишние
  • Как избавиться от пустого цикла без которого ничего не работает?

    godsplane, это нормальный вариант, но вам и $tag->slug в get_posts() убирать надо в идеале.
  • Как загрузить существующий сайт на github?

    Кроме контента у сайта на WP есть конфигурация. Часть конфигурации, насколько я понимаю, находится в БД, а часть может быть вынесена в файлы настроек.
    Эти файлы имеет смысл выносить в git.

    Часть конфига категорически нельзя выносить в git. Например - соли, логин-пароль для доступа в базу. Вообще, в идеале принято либо не добавлять wp-config.php в git, либо выносить sensitive данные в отдельный подключаемый конфиг и не вносить только его, либо вообще выносить значения в .env файл.

    Ваш сайт - это, в идеале, несколько docker-контейнеров:

    Да что ж все так носятся с этим докером. Это совершенно ненужная прослойка. Есть решения значительно проще и понятнее.

    Рендер делают в отдельном контейнере, иногда на отдельной машине.

    шта?? Зачем? Какой такой рендер? Вы реально усложняете простые вещи.

    Прелесть контейнеризации в том, что для бэкапа сайта нужно по факту забэкапить только БД и несколько пару докер-файлов, докер-компоуз и горсточку конфигов.

    Для переноса / бекапа сайта надо:
    - база (дамп)
    - свой кастомный код (должно быть под гитом)
    - сторонний код (сам WP, плагины и тд - в идеале должно устанавливаться/разворачиваться автоматом)
    - медиа-файлы и прочий user generated content
    - кастомный код, используемый только локально (конфиг или .env, плагины для dev-среды онли)
  • Для чего нужны МХ-записи?

    Ziptar,
    Нет, тем более, что я даже близко к разработке не имею отношения.

    Судя по тегам на которые вы подписаны, вы вообще сисадмин / интересуетесь этой темой. Так что это даже больше чем разработчик, в контексте вопроса про MX.

    Если человеку это нафиг не надо - пусть не лезет, а наймёт того, кому надо.

    Не нужно быть мудаком и вести себя подобным образом. Изменение МХ-записей для своего домена не требует найма специалиста. Это одно из тех действий, которое вполне может быть решено самостоятельно с помощью Тостера.
  • Для чего нужны МХ-записи?

    Ziptar, да, только вы смотрите на это с точки зрения разработчика, который это все знает и для него "это же элементарно". И это ключевая ошибка. Есть люди, которые не совсем понимают что такое "почтовый сервер", "домен", "доменные записи" и тд, и та тонна информации, которую вываливает гугл, совершенно не помогает - там проще потеряться, чем разобраться. Если задача стоит изучить эту область - тогда да, гугл поможет, можно будет найти массу интересных материалов и залипнуть надолго изучая все тонкости. Но если человеку это нафиг не надо? Если задача - быстро уточнить вопрос, выполнить в результате какое-то действие и забыть об этом навсегда?
  • Как очистить ключ от пробелов в meta_query?

    Александр Мищенко, это к лучшему. Меньше проблем в будущем будет.
  • Как очистить ключ от пробелов в meta_query?

    Александр Мищенко, А вот это уже не так просто. Дело в том, что сравнение происходит на уровне MySQL, в самой базе данных. Можно попробовать кастить данные в numeric и надеяться, что пробелы будут устранены:
    $recent2 = new WP_Query(
        [
            'showposts' => 100,
            'meta_query' => [
                [
                    'key' => 'cena', 
                    'value' => [2500, 2999],
                    'compare' => 'BETWEEN',
                    'type' => 'NUMERIC', // Форсируем приведение данных к числам
                ]
            ]
        ]
    );

    Попробуйте так, по идее должно сработать. Если же не сработает - остается только менять данные в базе. В этом случае разумнее всего сделать уже все по уму - изменить тип поля с text на number, программно пройтись по самим данным в базе и конвертировать (удалить пробелы).
  • Как очистить ключ от пробелов в meta_query?

    Александр Мищенко, Ну это вообще другая задача и к ней совершенно с другой стороны подходить надо. Получается что вводные данные у вас все-таки фиксированные, это массив со значениями 2500, 2999 и их очищать от пробелов не нужно. Нужно чтобы результирующий SQL запрос в сравнении мог оперировать значениями как '2600', так и '2 600', верно? И речь идет о значениях, сохраненных как произвольные поля уже в самих записях. Так?
  • Как очистить ключ от пробелов в meta_query?

    Александр Мищенко, У вас изначально в задаче стояло array(2500, 2999) - это массив из нескольких значений, отсюда появился и array_map(). Если же значение у вас одно, то достаточно одного preg_replace():
    $price = preg_replace('/\s/', '', get_field('cena'));

    А можно и сразу в самом meta_query:
    'meta_query' => [
        [
            'key' => 'cena',
            'value' => preg_replace('/\s/', '', get_field('cena')),
            'compare' => 'BETWEEN'
        ]
    ]
  • Как очистить ключ от пробелов в meta_query?

    Александр Мищенко, да не важно чей код, вы же можете любой фрагмент переписать под ваши задачи. Ну и да, такие детали как "данные приходят от ACF в виде строк" на самом деле важны.

    Так получилось у вас или что-то еще мешает? У вас цена это одно поле (и передается в meta_query одно ID), или их несколько?
  • Как очистить ключ от пробелов в meta_query?

    Александр Мищенко,
    1. Тогда почему в примере кода в самом вопросе у вас цена во-первых integer, во-вторых hardcoded?
    2. Задача в вопросе решается строками после переменной $values. Как, чем и откуда вы ее заполните - вопроса не касается.
    3. Чтобы заполнить данные из ACF используйте get_field() или цикл если речь о рипитере каком-нибудь. Впрочем, подозреваю что здесь у вас одно из relational полей - relationship или post object, они из коробки вернут массив ID, если это указано в настройках поля (выбор там между object и id).
  • Как решить проблему с 404 ошибкой при изменении количества товаров на страницу WooCommerce?

    IvanRu08, вам нужно понять жизненный цикл запроса в целом, потом это же в контексте WP - так называемый WordPress page lifecycle а так же природу работы хуков. Это позволит понять, что add_filter, вызванный в шаблоне, работать не будет. Про остальной код молчу, там один только switch чего стоит.
  • Хороший хостинг под мои требования?

    SEOD, Бросьте, "все детали" никому не интересны. Интересно сочетание оффшор + btc + inherent абузоустойчивость. Впрочем, это наш чисто спортивный интерес - автору как бы должно быть очевидно, что участвующие в этой дискуссии ничего не посоветуют, по ряду причин. По крайней мере публично.
  • Как правильно создать ajax-тему Wordpress?

    Александр Соболев, если делать SPA, то роутинг надо делать на фронтенде. Как - зависит от фреймворка, на котором вы будете делать SPA - React Router, @angular/router, vue-router и тд. WordPress тут уже ни при чем, он только отдаем JSON по API. Ну а роуты API (если стандартных не хватает) делаются по доке https://developer.wordpress.org/rest-api/extending...
  • Как решить проблему с 404 ошибкой при изменении количества товаров на страницу WooCommerce?

    IvanRu08, тут с этим кодом все печально. Переписывать все надо, и это уже не вопрос на Тостере, а задача для фриланса.
  • Как решить проблему с 404 ошибкой при изменении количества товаров на страницу WooCommerce?

    IvanRu08,
    функционал

    Функциональность

    create_function

    Прекращайте некрофилию. Эта функция давно deprecated. Читайте про closures - анонимные функции:
    add_filter( 'loop_shop_per_page', static function() {
        return 10;
    }, 19 );


    Но вот так уже не срабатывает

    Вы обернули вызов add_filter() в функция. Теперь вам нужно это функцию вызвать. И не просто вызвать, а ее и в нужное время, поскольку речь идет о хуке.
    Зачем вы обернули фильтр в функцию?
  • Почему не могу подключить к админке wordpress после переноса базы данных с другого сайта?

    azerphoenix,
    таблицы экспортировались не в полной мере

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

    Другой наглядный пример, плагин Wordfence

    Это раковая опухоль. Организм, пораженный раком, не может (и возможно даже не должен) нормально функционировать.

    В некоторых его версиях при экспорте таблиц появляются проблемы с импортом из-за того, что спец. символы некорректно экранированы

    То есть это реальный use case - экспортировать таблицы БД с помощью какого-то плагина, которые вообще не про это?

    возникает ошибка из-за чего остальные таблицы тупо не импортируются

    Ну это другой случай, это отсутствие таблицы целиком, а не сломанные данные. Мне интересен реальный случай, чтобы именно какие-то конкретные данные в одной из таблиц были повреждены.
  • Хороший хостинг под мои требования?

    SEOD, Что-то мне подсказывает, что мы тут с вами выдумываем какие-то сложные теории, в то время как истина все же достаточно банальна. И судя по тому, что автор все еще не озвучивает никаких деталей, изначальные предположения скорее верны, чем нет.
  • Хороший хостинг под мои требования?

    SEOD, для этого подойдет нормальный хостинг в той же развитой стране, где крипта легализирована. Не сходится)