• Как из админки вставлять обычные картинки, и шрифтовые-картинки от font-awesome в wordpess?

    @azerphoenix
    Возможно ли в wordpess динамически вставлять картинки которые я отметил на скриншоте в примере, чтобы менять можно было из админки? Как это правильно сделать?

    Запросто! Это называется кастомные поля. например, плагин ACF или фреймворк Carbon Fields
    1) установить ACF
    2) создать поля и указать, где выводить. Так как они должны выводиться на всем сайте, то рекомендую посмотреть в сторону acf options
    3) вывести поля в шаблоне
    4) добавить картинки и текст
    Готово
    Ответ написан
  • Почему jquery не хочет перемещаться в футер в worpdress?

    dimasmagadan
    @dimasmagadan
    есть какой-то скрипт (например query monitor), который вызывается в шапке и имеет в зависимостях jquery
    Ответ написан
  • Годный материал для обучения SEO?

    OtshelnikFm
    @OtshelnikFm
    Мои работы: otshelnik-fm.ru
    СЕО как астрология. На просторах инета написано много, но нет единой базы знаний и что страшно - никто не понимает как это работает - только догадки. Ну есть конечно такие общие понятия как семантическое ядро (звезды) заголовки и метатеги (созвездия), но вот если углубиться в ранжирование - то мы получаем понятия "близнец сегодня в созвездии девы"
    Ответ написан
  • Как проходит разработка на Wordpress?

    HeadOnFire
    @HeadOnFire Куратор тега WordPress
    WordPress & Laravel Evangelist
    Дополню ответы Владимир Дружаев, Дмитрий и Денис Янчевский своим личным примером. Для начала скриншот:

    5cef96d679ef6822748214.jpeg

    Внимательно посмотрите структуру проекта слева. А теперь разберем подробнее:

    1. WordPress и плагины - это зависимости проекта, а не сам проект. Весь проект построен на базе Composer, ядро WP - "черная коробочка" которая устанавливается как и любая другая composer dependency, лежит в папке core и туда вообще никто и никогда не заглядывает. Она в .gitignore, на всех environments ставится/обновляется все тем же Composer.

    2. Все плагины - бесплатные из .org, платные с разных источников и свои собственные - тоже Composer dependencies.

    3. Ни ядро WP, ни плагины, ни другие зависимости никакие редактора обновлять или ставить права не имеют - для этого существуют разработчики и контракт на поддержку проекта. Или in-house разработчик(и) на стороне клиента которые это дальше подхватят. Админский аккаунт клиента тоже порезан по возможностям, у главного разраба (то есть у меня) кастомная роль Super Admin, которая может все то, что дефолтный Administrator + еще дополнительные права (в каждом проекте свои нюансы). WordPress тоже сам себя не обновляет. Если клиенту нужна фича (не плагин, а именно фича) - ставится задача разрабам и уже они ее решают, не важно как - бесплатным плагином, платным плагином или кастомным решением.

    4. Критический код выполнен в виде MU плагинов. Чтобы даже суперадмин не смог выключить.

    5. Функциональная часть сайта реализована в виде плагинов (mu и обычных) или обычных php-библиотек, управляемых Composer. В этом случае лежат в папке vendor, как и положено. Она, естественно, вне git.

    6. Обратите внимание на папку deploy. Скрипт pipeline.sh - это процедуры деплоймента на разные environments с помощью BitBucket Pipelines. Они же с помощью WP-CLI на конечном сервере выполняют ряд post-deploy задач - например очистка transients и сброс кешей, принудительное выполнение cron-задач и вообще всего что может понадобится в конкретном проекте. В данном проекте все написано на Bash/Shell, но бывает на PHP (CLI-приложение), и/или на Golang. Скрипт sync.sh - это синхронизация базы и медиафайлов с одного environment на другой. Чаще всего используется для pull с прода на dev или staging, иногда для push с dev на staging. Все с бекапами и rollback'ом. Под капотом там активно используется WP-CLI. Всегда выполняется на dev перед началом работы, чтобы база и загрузки были актуальны. Пример работы / вывода скрипта в терминале:

    5cef9fb474621776796677.jpeg

    7. Тема, разумеется, находится в папке app/themes/theme-name. Тема отвечает исключительно за внешний вид. Там внутри своя сборка - webpack, gulp, babel, sass, скандальный node_modules (в .gitignore) и вот это все. Я лично занимаюсь только PHP-файлами, для фронтенд-части есть отдельный специалист, я же пользуюсь уже готовыми билдами от него. В некоторых проектах вместо стандартных шаблонов WP может использовать Twig путем установки Timber. Тоже через Composer.

    8. Там вы можете увидеть даже папочку tests. Да, в серьезных проектах на WordPress пишутся тесты. Впрочем, в данном конкретном проекте в этом не было необходимости (и бюджета) :)

    9. Конфиги построены на environmental variables, в стандартном wp-config.php вообще все не так, как многие привыкли. Все credentials, ключи - в .env, остальное в зависимости от среды в config/{environment}.php.

    10. Немножко про git и CI. Пушится все в ветки по фичам/фиксам и тд. Мердж пулл реквеста в ветку develop запускает деплой на staging. Мердж в master - на продакшн. Мерджит только тимлид (в нашем случае это я) после code review. Пулл реквесты, разумеется, проходят билд и тесты. Зеленый pull request я проверяю сначала локально у себя, потом мерджу в develop и проверяю на staging. Если все ок - релизится на прод. Но это в условиях команды, часто же приходится работать только на пару с фронтендером, в этом случае понятно что цепочка немного упрощается и code review сам себе не делаю.

    11. По поводу каких-то настроек которые редактора могут поставить на проде и это хранится в базе. В большинстве случаев достаточно deploy/sync.sh pull и менее чем за минуту получить свежую базу и загрузки (инкрементальный rsync). Если делаются какие-то фичи локально, которые хранят свои настройки тоже в опциях, их много и их потом надо залить на прод, чтобы ручками не мучаться - для этого есть миграции.

    Update
    12. Забыл еще один важный момент, который часто ставит в ступор тех, кто только начинает идти по этому пути. Плагин Advanced Custom Fields (Pro) и настройка его полей. Если он используется, то каждая нова фича, каждый релиз сопровождается созданием или изменением новых полей, и вот тут надо тоже как-то синхронизироваться, писать миграции и тд? Решаемо. У ACF есть функция синхронизации полей в JSON-формате, и еще лучше - возможность конфигурации групп и полей с помощью PHP-кода. Именно последнее позволяет все поля описывать в коде, код держать под VCS и деплоить с соответствующим релизом, а поверх накатить миграцию с default контентом для этих полей (если нужно). Такой подход, кстати, устраняет еще одну проблему ACF - снижение производительности. Поскольку все поля и их настройки больше не хранятся в БД, это сразу минус очень много запросов к БД. Плюс, поскольку они описаны в коде, это означает оптимизацию и opcache. Ну и reusability повышается существенно. Например вот так выглядит файл с описанием полей в виде массива:

    5cefb04e9de4f827142327.jpeg

    13. Разворачивается проект (на любом из серверов, у нового разработчика, на новом компе и тд) быстро и удобно:

    git clone адрес_репозитория && cd склонированная_папка_проекта
    
    # Одной командой качаем и устанавливаем все зависимости, включая
    # WordPress и все-все плагины, здесь же запускается post-install скрипт
    # который генерит .env файлы из образцов, задавая вопросы и получая
    # от вас ответы, генерит salts и выполняет другую рутинную работу. 
    # Последнюю команду по идее можно даже включить в этот скрипт.
    composer install 
    
    # И напоследок берем с прода свежую базу и папку uploads.
    deploy/sync.sh pull


    Подождали несколько минут, ответили на пару вопросов - и у вас развернут проект с последним стабильным кодом и актуальным контентом с прода. Скорость выполнения данной процедуры зависит только от того, есть ли в кеше Composer WP, плагины и другие зависимости ну и от размера базы на проде и веса папки uploads - если она большая, то первая установка может занять некоторое время. В дальнейшем будут качаться только обновленные и новые файлы - pull под капотом использует rsync в режиме incremental.

    И еще, если не хочется качать всю папку загрузок и держать ее локально (актуально для крупных проектов), то можно внести в конфиги скриптов небольшие изменения, чтобы файлы не качались а их урлы/пути в базе не заменялись. После этого достаточно добавить в корень проекта кастомный драйвер для Valet (мы используем Laravel/Valet в качестве локального сервера для разработки) который будет проксировать все запросы на медиа-файлы на продакшн или стейджинг (драйверу указывается базовый URL и он будет вместо https://project.test обращаться к https://staging.project.com например).
    /Update

    Справедливости ради - не на каждом проекте такая схема нужна. Не на каждом она вообще возможна. Данный подход предполагает командную работу, использование какой-нибудь связки типа Jira, Confluence, BitBucket, Strava/Slack. Или хотя бы Skype+Notion с клиентом. Эта схема предполагает адекватный (не маленький) бюджет, поддержку и развитие проекта в дальнейшем.

    Из опыта - по очень похожей схеме я работаю и с WordPress, и с Laravel. Заметных неудобств из-за того что WP это устаревший legacy код не испытываю. Все по современным, удобным и эффективным практикам. Клиентам, которые у нас уже по несколько лет на поддержке и развитии своих проектов по такой схеме - все нравится. За последние 4 года не вспомню ни одного существенного incident, вызванного проблемами в коде на проде или что-то сломанное в процессе деплоя. Сама схема и процессы со временем конечно же меняются, адаптируются, улучшаются.

    Надеюсь мой опыт немного прольет свет на то, как все можно делать. Если есть уточняющие вопросы - задавайте, с удовольствием отвечу.
    Ответ написан
  • Почему value в ACF передается только одним или первым символом?

    Chefranov
    @Chefranov
    Front-End, Back-End
    Выберите опцию "Возвращаемое значение" - "Оба (массив)"
    Ответ написан
  • Есть ли плагины личных блогов для пользователей на ВордПресс?

    @azerphoenix
    Просто переведите ВП в режим мультисайта и получие аналог wordpress.com
    Ответ написан
  • Как добавить обсуждения?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Мои работы: otshelnik-fm.ru
    Если это кастомный тип записи - то:

    'supports' => array('comments')
    - это стоит?

    Читаем доки: https://wp-kama.ru/function/register_post_type
    Ответ написан
  • Как вывести количество просмотров статьи?

    @azerphoenix
    Здравствуйте!
    А документацию этого плагина не читали?
    https://pageviews.io/
    <?php do_action( 'pageviews' ); ?>
    Ответ написан
  • Кастомный скелет поста Worpdress?

    @azerphoenix
    Приветствую!
    На мой взгляд использование ACF хорошая идея, особенно, если вы не так глубоко знакомы с ВП.
    Что нужно:
    1) использовать тип записи "Запись" (post) или создать свой кастомный тип записи (Например, Проекты)
    https://wp-kama.ru/function/register_post_type
    2) создать таксономию, если она нужна вам (для категорий кастомных записей)
    3) Создать шаблоны для кастомного типа записи и таксономии:
    single-cpt.php
    archive-cpt.php
    taxonomy-tax.php
    Этих будет достаточно. Обратите внимание, что "cpt" это название типа записи, а tax - это название таксономии
    4) Остается установить плагин ACF (у них на оф. сайте очень классная документация и поддержка на форуме).
    Дальше создаете нужные кастомные поля и назначаете их для кастомной записи, которую создали.
    5) Выводите ваши кастомные поля в верстке (в вышеуказанных шаблонах). Тут вы можете выводить только те поля, которые заполнены (проверка на пустоту) и т.д.
    6) остается из админки заполнить пару записей для демо и все.
    Ну и само собой разумется, что верстка (html, css, js)

    Другой способ - создавать кастомные поля используя Carbon Fields. Еще более простой способ использовать виз. редактор (не советую"). Суть в том, что вы создаете макет и сохраняете его, а дальше добавляете туда информацию каждый раз при создании записи.
    Ответ написан
  • Как скрыть название плагинов в WordPress?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    builtwith.com смотрит пути, названия скриптов стандартные выводы, и еще всякое, соответственно, для скрыть от него применяемые на сайте плагин, надо переименовать его, заменить названия скриптов и стилей, изменить классы которые он добавляет в HTML, короче - проще написать свое решение.

    А еще можно запретить обращение к сайту с IP которые пользует builtwith, но для понять чего там и как у вас достаточно чуваку который разбирается заглянуть в DOM сайта.

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

    Kozack
    @Kozack
    WordPress guru
    Это стандартное поведение в текстовом редакторе ВП.

    Одиночный перенос строки заменяется на <br> а двойной на <p>. Другими сломами следующий текст

    Привет
    мир!
    
    Как твои дела?


    При выводе (через хук the_content), будет приведён к такому

    <p>Привет<br>мир!</p><p>Как твои дела?</p>

    Кроме того, если у вас не полные права, будут применяться и другие фильтры.

    Вставляйте ваш html в специальный блок https://gogutenberg.com/blocks/custom-html/
    Ответ написан
  • Как вернуть старую форму сайта если нету бекапа?

    А если написать Хостеру в тех.поддержку о бекапе? бывает такое, что они могут откатить
    Ответ написан
  • Есть ли плагин для Вордпресс, который упростит работу добавления записей?

    @cema93
    WordPress разработчик
    Думаю, что вам поможет плагин Duplicate Post

    Пишете пост, а потом делаете дубли и меняете текст
    Ответ написан
  • Почему все расширения в Firefox перестали работать?

    riot26
    @riot26
    <:З )~~
    Какие-то проблемы с каким-то сертификатом, автообновление которого сломалось. Уже исправляют.
    https://bugzilla.mozilla.org/show_bug.cgi?id=1548973

    UPD:
    11:12 p.m. PST: The team is currently testing a fix for this issue. In the meantime, signing of new extensions is disabled until the fix is in place.


    UPD 2:
    Временное решение в блоге Мозиллы. Нормальное обновление на подходе.

    UPD 3:
    Update: Firefox developers are currently reviewing a patch that will fix this issue.


    UPD4:
    Технические подробности произошедшего в блоге Mozilla Hacks:
    https://hacks.mozilla.org/2019/05/technical-detail...

    UPD5 последний:
    Перевод подробностей на хабре.
    Ответ написан
  • Как происходит передача данных Contact-Form 7?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    special mail tag для такого есть https://contactform7.com/special-mail-tags/ [_post_title]
    Ответ написан