• Как в WP разрешить чтение постов с другим статусом?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Плагин не плагин, а регистрируется post_status в конечном итоге с помощью функции register_post_status. Как и многие другие функции WP, она принимает ряд аргументов, в том числе такие:

    public
    (bool) (optional) Whether posts of this status should be shown in the front end of the site.
    Default: false

    internal
    (bool) (optional) Whether the status is for internal use only.
    Default: false

    private
    (bool) (optional) Whether the posts of this status should be accessible by their urls.
    Default: false


    Эти аргументы определяют, будет ли доступен данный статус на фронтенде и будут ли генерироваться ЧПУ. Скорее всего плагин конфигурирует их как приватные, поэтому они недоступны. Есть 3 варианта (возможных):

    1. В самом плагине есть возможность перенастроить эти свойства под себя.
    2. Плагин предоставляет фильтр, с помощью которого можно изменить эти аргументы.
    3. Менять эти аргументы напрямую в определении статусов, через глобальный доступ (фильтрами тут WordPress, увы, не радует):

    function make_archived_status_public()
    {
    	global $wp_post_statuses;
    
    	// Меняем public на true
    	$wp_post_statuses['archived']->public = true;
    
    	// Повторяем для других аргументов, если нужно
    	// ...
    }
    add_action( 'init', 'make_archived_status_public' );
    Ответ написан
    8 комментариев
  • Какой плагин кеширования в Вордпрессе лучше других?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Ох, опять эта тема :)

    Для начала могу сказать какой точно никогда, ни при каких обстоятельствах не использовать - W3 Total Cache. Это адище с большой буквы. Туда же все остальные плагины, которые пытаются быть "все-в-одном" и предоставлять 120 страниц конфигурации. В топку.

    Далее, давайте мухи отдельно и котлеты отдельно. Есть object cache - у него свои задачи. Есть fragment cache - у него свои. Есть full page cache - это отдельная кухня. Есть кеширование на уровне сервера (nginx fastcgi_cache), все тот же full page cache но "навыворот". А еще Nginx умеет разговаривать с Memcached напрямую. И даже если сравнивать решения, которые делают одно и то же (например, тот же full page cache), разница в "эффекте" на разных серверах и даже на разных сайтах на одном сервере будет. Часто - существенная. Плюс, есть кеширование на многих уровнях на самом сервере - файловая система, кеши БД и тд. И все эти настройки будут влиять на поведение плагинов кеширования. Часто - существенно. Кеширование на стороне клиента - отдельная кухня, начиная с server push, prefetch и тд, выдача поддерживаемых форматов (brotli/gzip, woff/woff2/ttf, webp/jpg/png и тому подобное).

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

    А еще надо понимать, что ваш медленный DNS может убить всю экономию на PHP runtime. Или криво установленный SSL-сертификат. Или кеширование SSL-сессий, некорректно настроенное под специфику трафика конкретного проекта. Или канал на выходе перегруженный. Или далеко не оптимальный конфиг пула PHP. Или вообще Apache. Или I/O wait зашкаливает.

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

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

    @Arik
    в условии попробуй get_field использовать
    Ответ написан
    Комментировать
  • Как подключить css только к главной странице на wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    <?php
    
    // подключаем стили и скрипты
    function register_styles_scripts() {
        
        // стили для Главной
        if(is_home() || is_front_page()):
            wp_enqueue_style('style', get_template_directory_uri() . '/style1.css');
        endif;
        
        // Общие стили
        wp_enqueue_style('style', get_template_directory_uri() . '/style2.css');
    
    }
    add_action('wp_enqueue_scripts', 'register_styles_scripts');
    Ответ написан
    2 комментария
  • Как покрасить каждый второй блок?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    .item:nth-child(even) {background-color: #eff7fc;}
    Ответ написан
    1 комментарий
  • Почему не кликается одна и таже кнопка на разных страницах?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    У вас на других страницах нет самого модального окна. Она есть на странице категории, которую вы указали
    Говоря проще, это модальное окно загружается в футере предназначенном для Woocomemrce. Соответственно, он есть на страницах категорий /product-categpry
    А на обычных страницах его нет
    нет этого кода
    <div class="fusion-modal modal fade modal-1 modal-callback" tabindex="-1" role="dialog" aria-labelledby="modal-heading-1" aria-hidden="true" style="display: none;"><style type="text/css">.modal-1 .modal-header, .modal-1 .modal-footer{border-color:#ebebeb;}</style><div class="modal-dialog modal-sm"><div class="modal-content fusion-modal-content" style="background-color:#f6f6f6"><div class="modal-header"><button class="close" type="button" data-dismiss="modal" aria-hidden="true">×</button><h3 class="modal-title" id="modal-heading-1" data-dismiss="modal" aria-hidden="true" data-fontsize="27" data-lineheight="50">Наш менеджер скоро вам перезвонит</h3></div><div class="modal-body fusion-clearfix">
    <div role="form" class="wpcf7" id="wpcf7-f18123-o1" dir="ltr" lang="ru-RU">
    <div class="screen-reader-response"></div>
    <form action="/product-category/chargers/#wpcf7-f18123-o1" method="post" class="wpcf7-form form-submit" novalidate="novalidate">
    <div style="display: none;">
    <input type="hidden" name="_wpcf7" value="18123">
    <input type="hidden" name="_wpcf7_version" value="4.7">
    <input type="hidden" name="_wpcf7_locale" value="ru_RU">
    <input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f18123-o1">
    <input type="hidden" name="_wpnonce" value="e450f9a8ae">
    </div>
    <p><label> Ваше имя<br>
        <span class="wpcf7-form-control-wrap your-name"><input type="text" name="your-name" value="" size="40" class="wpcf7-form-control wpcf7-text" aria-invalid="false"></span> </label></p>
    <p><label> Ваш телефон *<br>
        <span class="wpcf7-form-control-wrap your-tel"><input type="tel" name="your-tel" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-tel wpcf7-validates-as-required wpcf7-validates-as-tel" aria-required="true" aria-invalid="false"></span> </label></p>
    <p><label> Ваш e-mail *<br>
        <span class="wpcf7-form-control-wrap your-email"><input type="email" name="your-email" value="" size="40" class="wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email" aria-required="true" aria-invalid="false"></span> </label></p>
    <p><input type="submit" value="Получить звонок!" class="wpcf7-form-control wpcf7-submit"><div class="fusion-slider-loading" style="display: none;"></div></p>
    <p style="font-size:9px">Нажимая кнопку вы принимаете <a href="/user-agreement/" target="_blank">пользовательское соглашение</a> и соглашаетесь с условиями <a href="/politika/" target="_blank">политики конфиденциальности</a></p>
    <div class="fusion-alert alert custom alert-custom fusion-alert-center fusion-alert-capitalize alert-dismissable wpcf7-response-output wpcf7-display-none" style="background-color:;color:;border-color:;border-width:1px;"><button style="color:;border-color:;" type="button" class="close toggle-alert" data-dismiss="alert" aria-hidden="true">×</button><div class="fusion-alert-content-wrapper"><span class="fusion-alert-content"></span></div></div></form></div>
    </div></div></div></div>
    Ответ написан
    1 комментарий
  • Нагружается ли сайт при большом количестве плагинов?

    yudinikita
    @yudinikita
    Инженер-программист из России
    Сам факт наличия плагинов никак не влияет на загруженность сайта. Всё зависит от того, что эти плагины делают и как написан код. То есть, если в 50 плагинах 10 строчек кода и они особо ничего не делают, а в 1 плагине 1000 строчек кода, и он совершает запросы в БД, включает фильтры, обновляет данные и т.д. то этот один плагин нагрузит сайт больше, чем все 50 плагинов вместе взятых.

    Подробнее
    Ответ написан
    Комментировать
  • Авторизация на wordpress?

    Punkie
    @Punkie
    БЕЗ ПЛАГИНА.


    Очевидно, открывать доки по каждой из социалок и изучать методы работы с их API.
    Ответ написан
    1 комментарий
  • Какая это тема вордпресс?

    ya-vitaliy
    @ya-vitaliy
    Верстаю... + wordpress и пробую Laravel
    Не знаю открою ли для вас секрет, но если сайт сделан на wordpress это не значит, что его делали путем установки бесплатного (или) платного шаблона, перекрашивании цветов "под себя" и добавления крутелок-вертелок. Так делают только домохазяйки или аля "блоггеры" (которые на своем блоге, стотысячный раз пишут как установить wordpress и предоставляют услуги поп "созданию сайта на wordpress") . По нормальному все делают с нуля начиная с прорисовки дизайна, верстки и заканчивая разработкой функционала (в конкретном случаи для бэкенда, чтобы было дешевле взяли CMS wordpress). Как-то так.
    Ответ написан
    1 комментарий
  • Как сделать галлерею изображений с помощью плагина ACF?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Да, repeater отлично подойдет для этого.
    Вам понадобится:
    1 repeater с полями:
    - изображение
    - url (для иконки, которая ведет на другую страницу).

    А далее ваш код:
    <div id="portfoliowrap">
      <div class="portfolio-centered">
        <div class="recentitems portfolio">
        	<?php if( have_rows('gallery') ):
                while( have_rows('gallery') ) : the_row();       
          ?>
          <div class="portfolio-item graphic-design">
            <div class="he-wrap tpl6">
              <?php $image = get_sub_field('image');
                if( !empty($image) ): ?>
                  <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
                <?php endif; ?>
                <div class="he-view">
                  <div class="bg a0" data-animate="fadeIn">
                      <h3 class="a1" data-animate="fadeInDown"><?php the_sub_field('title'); ?></h3>
                        <a data-rel="prettyPhoto" href="<?php echo $image['url']; ?>" class="dmbutton a2" data-animate="fadeInUp"><i class="fa fa-search"></i></a>
                        <a href="<?php echo get_sub_field('page_link');?>" class="dmbutton a2" data-animate="fadeInUp"><i class="fa fa-link"></i></a>
                  </div>
                </div>
            </div>
          </div>
    <?php endwhile; endif; ?>
        </div>
      </div>
    </div>


    По сути в иконку, которая ведет на полноразмерную картинку дублируете ссылку <?php echo $image['url']; ?>
    А в иконку, которая ведет на страницу добавьте кастомное поле. Например,
    <?php the_sub_field('page_link');?>

    Только небольшая рекомендация. У вас сейчас вместо миниатюр тоже полноразмерная картинка загружается. Соответсвенно надо в
    <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
    передать урл миниатюры.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы можно было в админке менять картинку в header?

    @cema93
    WordPress разработчик
    Рекомендую использовать Custom Headers
    Ответ написан
    Комментировать
  • Как отсортировать посты в категории по дочерним категориям?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Запросто!
    Вот, готовый код. Адаптируйте под себя.
    https://gist.github.com/DevinWalker/6fb2783c05b46a...
    Используете 2 цикла. 1 получает термины таксономии, второй цикл получает записи этого термина.
    Получится
    Категория 1
    Запись 1
    Запись 2
    ----------
    Категория 2
    Запись 1
    Запись 2
    ----------
    Ответ написан
    1 комментарий
  • Как чистить кэш стилей в вордпресс?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Давайте уточним:
    1) кэш бывает на сервере (плагины кэширования или в настройках хостинга) Как вы сказали, плагинов нет, тогда посмотрите может кэш на хостинге...
    2) кэш бывает на клиенте (кэш браузера) ctrl + shift + del или ctrl + f5 (или ctrl + fn + f5)
    3) кэш бывает на CDN (например, Cloudflare --> Cache --> Purge all cache)

    P.S. как вариант можете "заставить" браузер выкачать новые стили добавив к подключаемому стилю хэш. Например, style.css?ver=2
    Ответ написан
    Комментировать
  • Как убрать ошибку в Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    В шаблоне темы или плагина был создан сайдбар, которому не был назначен параметр ID. Надо добавить ID
    Ответ написан
    7 комментариев
  • Кнопка котороя меняет роль пользователя в вордпрес?

    @baton4eg
    web developer
    1) Через ajax по клику куда-то - отправляем запрос с ид пользователя которому нужно обновить
    2) Обновляем инфо с помощью функции https://wp-kama.ru/function/wp_update_user
    Ответ написан
    Комментировать
  • Как изменить страницу "Все записи" в Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Главная страница, если она статичная, то front-page.php, если динамичная, то home.php
    А если речь о блоге, то скорее archive.php или category.php
    Документация - https://developer.wordpress.org/themes/basics/temp...

    пагинация может быть, как встроенной в вашу тему, так и не быть. Надо отталкиваться от конкретной темы. Если хотите сами добавить пагинацию, то:
    https://wp-kama.ru/question/paginatsiya-v-wp_query
    dimox.name/wordpress-pagination-without-a-plugin
    gnatkovsky.com.ua/postranichnaya-navigaciya-v-word...

    А еще, чтобы вам было проще ориентирвоаться в шаблонах устаноите плагин Query Monitor и посмотрите, что какой шаблон используется при открытии страницы Блога
    Ответ написан
    1 комментарий
  • Как выглядит современный процесс верстки?

    @coderxx
    keep calm and learn js
    Не уверен что начинающим верстальщикам нужно заморачивать себе голову всем этим ужосом:) Но может кому-то и пригодится:
    - создаю новый проект на базе немного допиленного Optimized4HTML (можно копировать папку руками, можно сохранить в PhpStorm как темплейт, второе разумеется удобнее). Проект имеет следующую структуру:
    5c13ab56a03e8108817224.png
    - открываю его в PHPStorm, через командную строку устанавливаю пакеты и запускаю вотчер со следующей конфигурацией:
    5c13ad0d5c912921297608.png
    (таким образом отслеживаются изменения в файлах index.html, *.scss, common.js, а так же релодится браузер; в процессе верстки просто перескакиваем на виртуальный рабочий стол с открытым сайтом и сразу видим изменения, а если есть второй монитор то вообще песня). Кстати, перечень пакетов ннада?
    5c13ae2b57082880473288.png
    - из плюшек emmet и sass обязательно, в качестве таскранера - gulp.
    - макеты у меня в .sketch, так же кто не пробовал советую попробовать Figma, получите практически скетч в браузере. Adobe Photoshop не люблю. Adobe XD не пробовал, но осуждаю. Здесь наверное больше дело вкуса и реалий, в которых вы работаете (например, в каком формате получаете макеты, какая ОС на рабочем компе).
    Вроде все просто. Что непонятно - спрашивайте, отвечу.

    UPD. Optimized4HTML недавно перешел на Gulp 4, советую попробовать. Учтите, что Gulp 4 не имеет обратной совместимости с галпфайлами предыдущей версии, так как немного изменился синтаксис.
    Ответ написан
    9 комментариев
  • WordPress: я вписываю весь нужный код в functions.php. Правильно ли это?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Говнокод, но да.

    Файл functions.php - это просто обычный php-файл, который подключается на определенном этапе работы движка и весь код в нем выполняется. Все кастомизации можно тулить туда. Разумно ли это - другой вопрос, и уже выходит за рамки ответа "да / нет". Если кода много, то стоит задуматься о его организации. По простой логике, функциональность принято делить на отдельные классы, в случае с WP это часто просто отдельные файлы. Я лично предпочитаю в самом functions.php определять только то, что вешается на хук after_setup_theme, а дальше идет просто автолоадер всего остального или инклуды других файлов, которые размещены в theme_dir/inc
    Ответ написан
    1 комментарий
  • Что вы делаете если не укладываетесь в срок?

    @ponaehal
    Упрощаю вопрос:
    Я запланировал сделать это за две недели, но ошибся в оценке. Что делать?
    Ответ на мой взгляд очевиден:
    Извиниться, признать ошибку, сделать выводы. Все остальное (типа привлечение доп ресурсов, введение ночных смен и т.п.) это попытка прикрыть свою ошибку как менеджера за счет компании.
    Ответ написан
    2 комментария