• Как работает URL с кириллицей в WP?

    @ommunist
    Делаю и поддерживаю мультиязычные сайты
    Любой URI в WP работает как описано в документации. В случае с русским следует учитывать максимально возможную длину (78 русских символов, если память мне не изменяет). Все что длиннее - WP обрежет.

    То есть любая запись в WP имеет исходную ссылку вида example.com/?p=N

    А в зависимости от особенностей веб-сервера и настроек mod_rewrite, и настроек permalinks в админке WP она может быть какой угодно.

    В таблице wp_options есть запись option_name = "permalink_structure". А чтобы уж совсем гранулированно контролировать структуру URI есть настройка в той же таблице с названием rewrite_rules

    По умолчанию там записано вот что:

    [(.?.+?)/page/?([0-9]{1,})/?$] => index.php?pagename=$matches[1]&paged=$matches[2]
    [(.?.+?)/comment-page-([0-9]{1,})/?$] => index.php?pagename=$matches[1]&cpage=$matches[2]
    [(.?.+?)(/[0-9]+)?/?$] => index.php?pagename=$matches[1]&page=$matches[2]


    Ваш slug "мероприятия" это именно что семантический ярлык внутри URI, регулируемый через механику permalinks .

    Так что у вас не "статья с полем мероприятия", а либо "запись в категории", либо "запись с тегом", подчиняющаяся структуре permalinks, которая задана у вас в админке или в произвольной таксономии.
    Ответ написан
    Комментировать
  • Какими инструментами быстрее, проще и правильнее разрабатывать и собирать front end (верстка+wordpress)?

    fnnzzz
    @fnnzzz
    front-end dev
    webpack в твоем случае будет излишним, имхо.
    если вебпак, то можно юзать create-react-app, для того, чтобы что-то быстро напрототипировать - там уже готовый/настроенный/поперченный вебпак с hot module replacement.

    в обычных случаях (вроде натянуть верстку на вордпресс или django), я как правило, юзаю галп с лайврилоадом, который однажды настроил и забыл - по-моему лучшее решение. Можешь как написать конкретно под свои нужды сеттинг, либо же найти готовый.
    могу поделиться своим - https://github.com/fnnzzz/gulp-config

    для каких-то совсем простых штук - можно юзать прямо npm-скрипты: https://gist.github.com/fnnzzz/f90304458ee24307a3d...

    что касается других инструментов:
    раньше долго сидел на саблайме с зоопарком плагинов (emmet, всякое для синтаксиса, сниппеты и пр.), недавно пересел на webstorm и доволен (особенно радует синхронизация настроек через репозиторий)

    из препроцессоров юзаю только SCSS + бэм, но бэм использую малость кастомизированный с модификаторами через минус (читать тут - frontender.info/bem-sass-modifiers/)

    но если честно, не надо сильно загоняться - выбирай инструменты, которые удобны тебе и не обращай внимание на хайповость.
    Ответ написан
    8 комментариев
  • Как сделать так, чтоб имя файла при загрузке через Wordpress не искажалось?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Ставьте rus to lat плагин. С кириллицей проблем не будет - т.к. ее не будет
    Ответ написан
    Комментировать
  • Сбор позиций сайта, топ 500?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Ответ написан
    Комментировать
  • Суть 3 строки,если можно подробно "по символам грубо говоря"?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Читайте внимательно учебник. Судя по вопросам вы читаете learn.javascript.ru. В нем все очень подробно разбирается. Не поняли с одного раза, читайте еще раз, до тех пор пока не поймете. Вы задаете, очень глупые вопросы.

    function checkSpam(str) {
      var lowerStr = str.toLowerCase();
    
      return !!(~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx'));
    }
    
    console.log(checkSpam('buy ViAgRA now'));
    console.log(checkSpam('free xxxxx'));
    console.log(checkSpam("innocent rabbit"));


    ~lowerStr.indexOf('viagra') // Если подстрока найдена, то вернется ее индекс начальной позиции.
    Если подстрока не найдена, то вернется -1. Для удобства делают побитовое НЕ (~).
    т.е если строка будет найдена то в любом случае вернется положительное число, при побитовом НЕ, оно так станет в любом случае или строго меньше 0 или строго больше.
    А любое число отличное от 0 является true. Если строка не будет найдена, то вернется -1, при побитовом НЕ, станет 0. В логическом представлении false.
    Тоже самое и с ~lowerStr.indexOf('xxx').
    !! - это двойное отрицание. Костыльный прием перевести что угодно в булевый тип, trueили false.
    || - это побитовое ИЛИ.

    // В итоге при передачи строки "buy ViAgRA now":
    // ~lowerStr.indexOf('viagra') = -5
    // ~lowerStr.indexOf('xxx') = 0
    // (~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx')) = -5
    // !!(~lowerStr.indexOf('viagra') || ~lowerStr.indexOf('xxx')) = true
    // Возвращается true


    Вот так возможно вам будет более ясно как работает "проверка спама":
    let checkSpam = string => {
    	let lowerCaseString = string.toLowerCase(); // "Преобразовать" строку в строку с нижним регистром
      
      if (lowerCaseString.indexOf(`viagra`) != -1 || lowerCaseString.indexOf(`xxx`) != -1) { // Если найдена хотя бы одна из подстрок, то вернуть true
      	return true;
      } else { // иначе вернуть false
      	return false;
      }
    }
    
    console.log(checkSpam('buy ViAgRA now')); // true
    console.log(checkSpam('free xxxxx')); // true
    console.log(checkSpam("innocent rabbit")); // false
    Ответ написан
    1 комментарий
  • Убрать циклическую ссылку с logo?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Привет.

    Как-то так:
    <div class="logo">
    <?php if(!is_front_page() && !is_home()) : ?>
            <a href="<?php echo esc_url( home_url( '/' ) ); ?>">
    <?php endif; ?>
              <?php if(get_field('logo_image', 'option')): ?>
                <img src="<?php the_field('logo_image', 'option'); ?>" title="" alt="">
              <?php endif; ?>
              <?php if(get_field('logo_text', 'option')): ?>
                <span><?php the_field('logo_text', 'option'); ?></span>
              <?php endif; ?>
    <?php if(!is_front_page() && !is_home()) : ?>
            </a>
    <?php endif; ?>
          </div>
    Ответ написан
    Комментировать
  • Как установить маску для поля телефона на шаблон Wordpress?

    @k0nsu1
    Воспользуйтесь плагином jQuery migrate
    Ответ написан
    Комментировать
  • Как в кастомном типе записи сделать поле обязательным для заполнения?

    baskserg
    @baskserg
    Better skills, better life.
    Проверяйте нужные поля при сохранении поста
    https://codex.wordpress.org/Plugin_API/Action_Refe...
    Ответ написан
    Комментировать
  • Какой плагин выбрать для Wordpress?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Как правило то, что позволяет вам зарабатывать (магазин) платным не бывает. Ядро в виде вукоммерца бесплатно - потому что необходимо массово подсадить людей на него, а потом уже начать зарабатывать. Поэтому смиритесь и берите платное решение - к нему как правило полагается техническая поддержка. А это убережет ваше время и нервы в будущем.
    Ответ написан
    Комментировать
  • Не работает проверка на пустой массив?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    я в вп вообще не в зуб ногой, но проверка if (!empty($args)) при том что выше строчкой вы "вручную" пихаете в него кучу данных выглядит весьма странно. Если строчка
    должен подкрепляться если будут выводиться данные из кода
    это какой-то особый массонский слэнг вордпресовцев, тогда я хз, а так, не понятно что вы ожидаете и что работает не так?

    ps: возможно поможет if ($args['child_of'] > 0)... если предполагается что это какой-то ненулевой индекс объекта
    Ответ написан
    2 комментария
  • Какой конструктор сайтов посоветуете?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    группы в ВК и фейсбук мощные, сложные, про дизайн не скажу, если у вас есть там аккаунт, больше дополнительная регистрация не нужна.
    Ответ написан
    Комментировать
  • На базе чего реализовать мультивендорную (marketplace) площадку, чтобы потеснить Амазон?

    Punkie
    @Punkie
    Не важно на какой CMS вы будете реализовывать задуманное. Главное - это чтобы вам скилла хватило в работе с конкретной CMS. Ну или чтобы у вас был человек, разбирающийся в выбранной вами CMS.

    Джумладрочеры сейчас будут говорить "да да. только Джумла, вп - говно!". WP-шники (вроде меня) будут хейтить джумлу и тянуть одеяло к вордпрессу. ModX-еры будут вообще всех говном поливать :)

    С такой постановкой вопроса вы вряд-ли сможете получить устраивающий вас ответ.

    p.s.: Ну а если скилла примерно одинаково (или нет скилла ни в одной из цмс и вы планируете учить) - то тут смотрите по наличию документации, обьёму комьюнити и наличию плагов. У ВП, к слову, помоему самое большое комьюнити и репозиторий плагов. Практически любая задача уже кем-то была реализована и легко гуглится.
    Ответ написан
    Комментировать
  • Как в Wordpress сделать одинаковые slug для записей в разных категориях?

    VasyaPertrov
    @VasyaPertrov
    Изготовление и безопастность сайтов. WP и др.
    Можно ли сделать так чтобы он понимал что это запись другой категории и не добавлял цифру?

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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

    Это далеко не полный список требований, очень много зависит от проекта в целом и от принципов, заложенных в нем. Для больших мредж реквестов 200 комментариев к коду - это ок. Дерзайте.

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Какую cms выбрать для сайта с поддоменами?

    MindMinimal
    @MindMinimal
    Front-end Developer, веб-разработчик
    Wordpress + костыли (в качестве синхронизации\экспорта\импорта), гуглить Wordpress multisite
    Ответ написан
    Комментировать
  • Можно ли изменить установки по дефолту?

    VasyaPertrov
    @VasyaPertrov
    Изготовление и безопастность сайтов. WP и др.
    Можно ли как то изменить значение 'in_same_term' без дочерней темы и чтобы не слетало при обновлении?

    Написать плагин и то это сработает только если там, где объявляется функция, есть проверка её существования.

    В чём проблема создать дочернюю тему - не понимаю.
    Ответ написан
    5 комментариев
  • Wordpress вывод относительной даты: сегодня, вчера?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Сравниваешь запись поста с текущей датой, прогоняешь через if else к примеру. И ставишь условия. Выполняются - ставишь синоним, нет - оставляешь числа. Чистый php с минимумом вордпресса.
    Да и в гугле тонны материала на этот счет.
    Ответ написан
    8 комментариев
  • Почему не работает доп. поле wordpress?

    @MrTimon
    Или вы что-то не понимаете или я. Как я понял с кода "btc" - это шоткод, а не дополнительное поле? Чтобы вывести шорткод Вам нужно выполнить команду

    <?php echo do_shortcode('[btc]'); ?>

    а не

    <?php echo get_post_meta($post->ID, 'btc', true); ?>
    Ответ написан
    5 комментариев
  • Зачем склеивают html-теги комментариями и как решить проблему без комментов?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Ага.. а в чём проблема-то?
    Ответ написан
    Комментировать