Задать вопрос
  • Для каких задач в веб-разработке очень хорошо подходит питон?

    antimodern,
    из этого твоего большого процента говно-сайтов на вордпрессе 99% приходится на говновебмастеров, которые настротрелись говно-инфоматериалов и пошли делать свои говно-блоги

    Во-первых, в Ruby, Python, в любом языке, а особенно (прям очень особенно) - в JavaScript, говнокода совершенно не меньше в процентном отношении. А в JS, боюсь, даже больше ибо самый низкий порог. Да даже на Golang умудряются говнокодить, хотя язык сам по себе из штанов выпрыгивает чтобы не позволять этого.
    Во-вторых, и на PHP, и на WordPress есть так же и хорошие проекты с качественным кодом. Дело не в языке / CMS / фрефмворке / технологии / стеке, дело ВСЕГДА в людях. А они везде одинаковые.

    Ну и кроме того, все переваливаются активно на SPA/Headless CMS.

    Вот нет. Совсем НЕТ. Вы живете в парадигме JS-экосистемы, кормитесь новостями оттуда же и вам реально кажется что весь мир с ума сошел и массово мигрирует на SPA. Но увы, за пределами вашей уютной жжшечки жабаскриптоэкосистемы есть огромный мир, в котором SPA - лишь один из многих вариантов, далеко не главный, и не самый перспективный и вообще. И никто в него не мигрирует, и даже всерьез не рассматривает.
  • Для каких задач в веб-разработке очень хорошо подходит питон?

    Попробуй:

    Вы же понимаете, что в современных реалиях практически все обзавелись скаффолдами и cli-тулзами и подобное никого уже не удивляет? Даже в PHP - тот же Laravel, даже WordPress с Drupal умеют в CLI уже давным давно :)
  • Как в WP разрешить чтение постов с другим статусом?

    Евгений Ефимченко, ссылка не открывается (возможно allbiz заблокирован у нас в Украине).

    Вопрос в другом. Как я понимаю, вы создали кастомную роль no_role, и дали ей разрешение на чтение private_pages и private_posts. Сначала вопрос - каким образом WordPress начинает использовать эту роль, если на сайт зашел гость, который не авторизован? Каким образом применяются эти capabilities? Далее, предостережение. Вы открыли (правда я не понимаю как это может работать) доступ ко всем приватным страницам и записям любых типов, которые наследуют capabilities от post. Это небезопасно, да и нежелательно по другим причинам. Кроме того, если у вас есть (или будут в будущем) custom post types с кастомными capabilities, а не слепо наследуемые от post, то на них эти разрешения не распространятся (ибо у них будут свои read_* capabilities).

    В общем, работает оно у вас вопреки всей логике, и я действительно подозреваю, что оно и не совсем работает, скорее вы пока не заметили косяков. Клиент чуть позже заметит. В любом случае, это адский говнокодище :) При том что решение в моем ответе позволяет получить требуемый результат без танцев с бубном, безопасно, изолированно для одного конкретного статуса.
  • Как в WP разрешить чтение постов с другим статусом?

    Евгений Ефимченко, Значит ваше изначальное описание проблемы некорректно. Потому что решить недоступность на фронте записей с кастомным статусом с помощью capabilities невозможно.
  • Что не нравится яблокам?

    Максим Тимофеев, А какая верси Сафари? Ибо у меня все ок (самые свежие версии iOS и macOS + последние сафарики там и там)
  • Как в WP разрешить чтение постов с другим статусом?

    Евгений Ефимченко, Ась? Вы вообще куда-то не туда копаете. User Role Editor - это плагин для редактирования capabilities пользователей. В данном случае у вас нет проблемы с capabilities пользователя, а гости (неавторизованные) вообще не проходят через capabilities.

    Создать нового пользователя с наследованием "ничего" и дать ему права на чтение всего.

    Это ничего не даст. Читать все сможет только этот пользователь, если он авторизован.

    А вот со ссылками как быть, непонятно пока что.

    Ссылки - это rewrite rules. Они генерируются автоматически, если разрешено аргументами, переданными в register_post_status.

    Внимательно перечитайте еще раз мой ответ. Не изобретайте танцы с бубном и завываниями.

    Если данный статус зарегистрирован как непубличный, вы хоть тресните, а WP не включит его в SQL запрос, и не сгенерирует ему rewrite rules. И никакие танцы с правами (capabilities) вам не помогут, потому что WP записи с этим статусом будет упорно игнорировать на фронте. Ибо так ему указано в аргументах, переданных при регистрации данного статуса.
  • Как вывести все дочерние страницы определенной страницы wordpress?

    не совсем уместны, поскольку на изучение того, что предлагаете уйдут недели и месяцы.

    Но без этого у вас будет день сурка, и "когда задачу нужно решить здесь и сейчас" будет повторяться снова и снова, вы будете решать это адским говнокодом "вопреки WP", и через весьма короткий промежуток времени проект становится неподдерживаемым. И да, на это достаточно нескольких часов - открываете WP, запускаете Xdebug и пошагово идете по выполнению движка.

    Остановитесь, выдохните, почитайте про $query_vars вместо использования ненадежного и небезопасного $_SERVER['REQUEST_URI'].

    прошу специалистов помочь показать, что в моем коде не так

    Все не так, именно об этом мой комментарий. То, что у вас сама архитектура сделана ахово, это одно. Но вы даже не понимаете, что WP уже и так парсит реквест и держит в глобальном скоупе все необходимые вам данные. Если бы вы понимали цикл от запроса до ответа, то задачу спокойно решили бы сами.

    как лучше реализовать эту задачу, даже с иным решением.

    Переписать архитектуру с нуля, на custom post types и custom taxonomies.
  • Как заменить в админке в статусе заказа гостя на зарегистрованного пользователя?

    ligisayan,
    Естественно, т.к. woocommerce предлагает для этого еще поставить галку зарегистрироваться и все равно ты новый клиент или повторный, но просто не залогиненый, а это неудобно.

    Вот тут мысль как раз пришла. По идее у WooCommerce есть фильтр перед самим созданием пользователя. Данные, возвращаемые этим фильтром передаются далее в wp_insert_user(). Если в эти данные добавить ID юзера (а его мы можем получить проверив на существование по мылу или телефону), то будет обновлен существующий юзер + далее этот же ID существующего юзера будет возвращен далее в WooCommerce в виде $customer_id. То есть, будет получен нужный результат.
  • Как заменить в админке в статусе заказа гостя на зарегистрованного пользователя?

    ligisayan, Хм, пробежал по диагонали эту статью, интересно. Уверен, что это не единственный (и возможно даже не самый разумный) способ, но ковырять и решать столь объемную задачу сейчас, увы, времени и возможности нет (хотя не скрою, она меня заинтересовала). Работает - и хорошо. Для вас на данном этапе это самое главное.

    А это как? Просить вводить юзера не полный телефон? чревато ошибками, расчет на дурака всегда должен быть

    Нормализация это и есть комплекс мер, которые включают и защиту от дурака, и форсирование определенного формата, и валидацию ошибок, и потом, после того как данные прошли, их последующая обработка, чтобы в БД они всегда хранились в одинаковом формате. Например:
    - ввести можно только цифры (пробелы, скобки, +, дефисы и тд - не принимаются полем типа "number")
    - длина должна быть 10 (3 цифры код оператора/региона + 7 цифр сам номер) или 12 (+2 цифры международного формата). Это для Украины - у нас 38 код страны, 0XX код оператора и XXX XX XX - сам номер. У США код страны 1 цифра, например. Подробнее по нужным странам можно посмотреть тут.
    - далее, если 12 цифр - валидируем что первые 2 соответствуют коду страны
    - на бекенде смотрим, если 10 цифр, дописываем код страны
    - сохраняем в БД в одинаковом формате: 12 цифр (код страны + код оператора + номер)

    Это минимально адекватный вариант. В зависимости от требований учесть другие страны можно логику усложнять - можно выбор страны сделать селектом + геолокация, отдельно код оператора/региона (+валидировать его чтобы он был реальный, все эти коды известны и есть их базы), отдельно сам номер 7 цифр без пробелов и других символов. В общем, это не так сложно, как кажется на первый взгляд.
  • Как заменить в админке в статусе заказа гостя на зарегистрованного пользователя?

    ligisayan, по метаданным можно искать конкретного юзера через WP_User_Query, принцип тот же что и с WP_Query. Впрочем, если телефонный номер считается более уникальным, чем имейл (и на него опираемся), то я бы в таком случае модифицировал регистрационный процесс - нормализация телефонного номера (к одному стандарту - полный международный формат, только цифры) и использование его в качестве логина. Тогда возвращаемся к get_user_by. В любом случае, нужно этот фрагмент упрощать и оптимизировать, потому что брать всех и перебирать со сравнением - это бутылочное горлышко.

    А какие хуки у регистрации клиента woocommerce?

    Ну я смотрю что у вас на thankyou происходит wp_insert_user() и это как бы совсем неправильно. WooCommerce умеет регистрировать гостей в процессе оформления заказа, и в этом случае на страницу thankyou уже прилетает созданный пользователь, а заказ уже привязан к нему. Вы же, видимо, не используете родную фичу WC, а пытаетесь делать это самостоятельно.
  • Почему на западе любят поддомен www в адресе сайте, а у нас корень домена?

    Siberian_Bear, я когда-то сам задавался этим вопросом, и тоже что-то меня изнутри грызло, подозревало что не все так однозначно. Углубился, исследовал, порасспрашивал более опытных коллег на западе - и все прояснилось. Рад передать знания дальше.
  • Зачем нужен PHPDoc в php-7?

    WordPress тоже страдает таким повсеместно, там часто бывает целый зоопарк на выходе типа WP_Post|int|bool|null (при чем int может быть только 0, а bool - false).
  • Почему worpress добавляет перед каждым символом (') или ("). (\) В методе get и post?

    zeni1agent, Забудьте, мы на разных языках говорим. Я не анализировал ваш js-код и понятия не имею что вы там делаете. Говорю лишь о том, что WordPress делает addslashes() не просто так. Если в вашем конкретном случае они не нужны (и вы в этом уверены на 100%) - тогда делайте stripslashes() и вопрос закрыт.
  • Почему worpress добавляет перед каждым символом (') или ("). (\) В методе get и post?

    zeni1agent, https://www.sitepoint.com/php-security-blunders-2/
    Технически, возможно в вашем случае не принципиально, тогда делайте stripslashes. Но WordPress обязательно будет экранировать спецсимволы, чтобы новички, ничего не смыслящие в написании безопасного кода, не оставляли за собой открытые двери.
  • Почему worpress добавляет перед каждым символом (') или ("). (\) В методе get и post?

    zeni1agent, ну, изучать весь ваш код не вижу смысла, просто напомню вам о том, что с таким же успехом в ваше текстовое поле можно ввести javascript-код, который будет без проблем выполнен.
  • Как переименовать произвольный тип записи?

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