Задать вопрос
  • Как создать пагенацию для шаблона страницы в WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Простое решение - dimox.name/wordpress-pagination-without-a-plugin
    Пример реализации -
    https://md7.info/surgery
    https://reporter.by/belarus

    Лучше используйте циклы query_posts или WP_Query

    А вы не разделили шаблон на footer.php & header.php ? Как я вижу у вас wp_footer() находится в том же шаблоне, где он вызывается...

    Готовый рабочий код:

    Добавьте в functions:
    function wp_corenavi(){
      global $wp_query;
      $pages = '';
      $max = $wp_query->max_num_pages;
      if (!$current = get_query_var('paged')) $current = 1;
      $a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999));
      $a['total'] = $max;
      $a['current'] = $current;
    
      $total = 1; //1 - выводить текст "Страница N из N", 0 - не выводить
      $a['mid_size'] = 3; //сколько ссылок показывать слева и справа от текущей
      $a['end_size'] = 1; //сколько ссылок показывать в начале и в конце
      $a['prev_text'] = '«'; //текст ссылки "Предыдущая страница"
      $a['next_text'] = '»'; //текст ссылки "Следующая страница"
    
      if ($max > 1) echo '<div class="navigation">';
      if ($total == 1 && $max > 1) $pages = '<span class="pages">Страница ' . $current . ' из ' . $max . '</span>'."\r\n";
      echo $pages . paginate_links($a);
      if ($max > 1) echo '</div>';
    }


    Добавьте стили:
    /* pagination */
    .navigation {
        display: block;
        text-align: center;
        margin: 20px auto;
    }
    .pages {
        padding: 5px 7px;
        color: #fff;
        background: #333;
    }
    .page-numbers {
        background: #333;
        padding: 5px 7px;
        color: #fff !important;
        
    }
    .page-numbers.current {
        text-decoration: underline;
    }
    .page-numbers:hover {
        text-decoration:none;
        opacity: 0.8;
    }


    Добавьте код вывода пагинации в цикл:
    <?php if (have_posts()) :  while (have_posts()) : the_post(); ?>
    	<? //здесь ваш контент ?>
    <?php endwhile; ?>
    <?php if (function_exists('wp_corenavi')) wp_corenavi(); ?>
    <?php endif; ?>

    P.S. не забудьте передать ваши аргументы $args
    Ответ написан
  • Как решить проблему с длинным меню в Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Когда меню слишком массивное, то я использую плагин Ubermenu. Можно разбить мен в несколько колонок https://wpmegamenu.com/
    Ответ написан
    Комментировать
  • Как ускорить загрузку сайта?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Общие рекомендации для ускорения сайта. Этим методом я могу оптимизировать сайты до 100%. Другой вопрос - нужно ли это)))

    1) Установите плагины Fastest cache + Fastest cache premium + Autoptimize.
    В плагине Fastest Cache & Premium включите все пункты, КРОМЕ 3-х пунктов касающихся CSS
    5b7010485d97c901632931.png
    В плагине Autoptimize включите пункт оптимизации CSS, перейдите в расширенные настройки поставьте галочку Inline All CSS и из исходного кода скопируйте код, которые между . После чего сгенерируйте критичный CSS на сайте https://jonassebastianohlsson.com/criticalpathcssg... и добавьте его в плагин autoptimize.
    Этим вы уберете проблемы:
    "удалить js & css код препятствующий отображению". Согласно оф. источнику сам fastest cache не убирает render blocking CSS из-за чего мы и используем autoptimize.
    https://www.wpfastestcache.com/premium/optimize-cs...
    P.S. У вас сейчас на сайте именно на это гугл и жалуется.
    2) оптимизируйте изображения. Рекомендую использовать EWWW Image Optimizer и если позволяют финансы, то берите премиум пакет, чтобы лучше оптимизировать. В противном случае, гугл все равно жалуется. Или же можете вручную сжать фотографии, предварительно скачав их на компьютер. Для ручного сжатия я использую jpegoptim & jpegtran
    Cсылка - https://sheensay.ru/optimization-png-jpg#kak-ustan...
    https://ruhighload.com/jpegoptim
    Достаточно оставить % сжатия 25-30%

    3) Если вы разместили счетчики и различные информеры и кнопки "поделиться", то чтобы гугл не жаловался можно подключать их локально. Так как гугл не рекомедует подключать скрипты локально, так как они могут устареть, то обязательно создайте Cron задачу и регулярно обновляйте эти файлы. Пример рнр скрипта, который регулярно обновляет js скрипты.
    В корне сайта создайте папку js & рнр файл со следующим содержимым. А далее по крону запускайте этот файл. Достаточно обновлять раз в неделю... Соответственно, все скрипты подключайте локально предварительно изменив js код
    <?php
    function downloadJs($file_url, $save_to)
    {
        $content = file_get_contents($file_url);
        file_put_contents($save_to, $content);
    }
    // Yandex Metrika
    downloadJs('https://mc.yandex.ru/metrika/watch.js', realpath("./js") . '/watch.js');
    // Yandex Share
    downloadJs('https://yastatic.net/es5-shims/0.0.2/es5-shims.min.js', realpath("./js") . '/es5-shims.min.js');
    downloadJs('https://yastatic.net/share2/share.js', realpath("./js") . '/share.js');
    // Google Analytics
    downloadJs('https://www.google-analytics.com/analytics.js', realpath("./js") . '/analytics.js');
    // Googla Adsense
    downloadJs('http://pagead2.googlesyndication.com/pagead/show_ads.js', realpath(".js") . '/show_ads.js');
    downloadJs('https://pagead2.googlesyndication.com/pagead/osd.js', realpath("./js") . '/osd.js');
    downloadJs('https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js', realpath("./js") . '/adsbygoogle.js');
    // VK
    downloadJs('http://vk.com/js/api/openapi.js?139', realpath("./js") . '/openapi.js');
    // Google Plus Widget
    downloadJs('https://apis.google.com/js/plusone.js', realpath("./js") . '/plusone.js');
    // Google Recaptcha
    downloadJs('https://www.google.com/recaptcha/api.js', realpath("./js") . '/api.js');
    downloadJs('https://www.google.com/recaptcha/api2/webworker.js', realpath("./js") . '/webworker.js');
    downloadJs('https://www.google.com/recaptcha/api.js', realpath("./js") . '/api.js');
    ?>

    4) Если на сайте ВП используете аватарки от gravatar, то закэшируйте их при помощи плагина FV Gravatar Cache или Harrys Gravatar Cache
    5) Если на сайте вы используете вставку картинок, которые добавляются извне, то плагин LH Cache Remote Images поможет вам их закэшировать и отдавать локально
    6) Если гугл жалуется на Query String from static resources, то установите плагин Remove Query Strings From Static Resources

    На самом деле многое из предложенного выше являются лишним и наверное не стоит гоняться за % оптимизации. У себя я использую плагин Fastest Cache & Fastest Cache Premium и все. Но иногда заказчики просят именно результата 100% и тогда приходится прибегнуть к вышеуказанным мерам.
    Ответ написан
    Комментировать
  • Как реализовать такое липкое меню?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Готовое простое решение -
    https://www.w3schools.com/howto/howto_js_sticky_he...
    https://www.w3schools.com/howto/howto_css_fixed_me...

    Пример реализации - https://reporter.by/
    Ответ написан
    Комментировать
  • Почему не устанавливается приложение на Android?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    1) Пусть, заказчик проверит и включит установку приложений из "Недоверенных источников". Сделать это можно в настройках.
    2) При сборке проекта в Android Studio (елси вы создаете релиз), то выбирайте обе версии подписки (v1 & v2). Я пробовал например, подписывать только v2 и у меня была та же проблема.
    3) Проблема в телефоне заказчика - версия андроид (требования в манифест файле), объем памяти и т.д. Также на всякий случай проверьте есть ли в манифесте нужные права для корректной работы приложения (например, подключение к интернету и т.д.)
    Ответ написан
  • Слайдер под Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Берите связку
    Берите кастомные поля carbon fields или ACF
    А также скрипты flexslider2 или owl carousel
    А далее сверстайте макет на основе flexbox или CSS grid. И интегрируйте это все.
    Ответ написан
    Комментировать
  • Почему у меня дублируется футер в Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    1) На момент просмотра я вообще не вижу футера
    2) Проверьте корректность подключения футера и шапки.
    перед закрывающим тегом </head>должен быть<?php wp_head(); ?>
    перед закрывающим тегом </body> должен быть<?php wp_footer(); ?>
    3) Может быть вы в index.php получаете header & footer, а потом тоже самое делаете в шаблоне footer.php ? Может быть у вас get_footer() вызывается 2 раза
    Ответ написан
    Комментировать
  • Почему не работает TOC+ WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Я использую плагин - Easy Table of Contents
    Пример страницы - https://md7.info/demodekoz

    Что касается вашей проблемы, то нужно уточнить...
    1) Как имено выводится главная страница
    2) проверьте корректность подключения wp_footer & wp_header
    Ответ написан
    Комментировать
  • Задать класс записи имея id?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Если я правильно понял ваш пример, то вы используете плагин ACF.

    Простой пример, как можно задать класс при условии, что просматриваемая статья соответствует id записи.

    <?php if(is_single(array(22,37,12))) { ?>
    <!-- ваш код здесь -->
    <?php } ?>


    используя такой код, можно например, добавлять открывающие и закрывающие с тегами... пример:
    <?php if(is_single(array(22,37,12))) { ?>
    <div class="content"> <!-- открыв тег -->
    <?php } ?>
    <!-- bla bla content -->
    <?php if(is_single(array(22,37,12))) { ?>
    </div> <!-- закрыв. тег -->
    <?php } ?>
    Ответ написан
    Комментировать
  • Неужели woocommerce можно установить только на удаленный сервер?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте.
    Проблема не в вукомерц, а в ваших настройках локального сервера. Для установки из репозитория у вас должен быть настроен фтп доступ.

    Другое решение - define('FS_METHOD','direct');
    https://www.hongkiat.com/blog/update-wordpress-wit...
    Ответ написан
    1 комментарий
  • Как реализовать автоматическую отправку промокода в форме заполнения заявки?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Вы предоставили мало информации... Например, что за промокод и как он создается. Генерируется ли автоматически или речь идет о промокоде Woocommerce. Далее, что за плагин для отправки формы обратной связи вы используете? CF7 например...
    Я бы сделал это следующим образом... установите плагин ACF и изучите acf_form() https://www.advancedcustomfields.com/resources/usi...
    Далее при отправляйте сообщение при помощи wp_mail()
    https://wp-kama.ru/function/wp_mail
    А далее в теле функции, где есть отправка формы можете генерировать промокод, писать в переменную и включить в body письма.
    Ответ написан
    5 комментариев
  • Как ограничить доступ к wp-admin и wp-login.php на Wordpress портале?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте. Не смотрели случайно плагин Users Role Editor ?
    А для личного кабинета и единой системы авторизации посмотрите плагин Wp Recall
    Ответ написан
  • На чем лучше сделать подобный сайт?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    А я бы остановился не на CMS, а на CMF. В частности Yii2, Laravel, Symfony
    ВП конечно хорошая система... но весь функционал личного кабинета упирается в плагин WP Recall. Можно конечно самому написать плагин, но смысл делать это.. Берите Yii2 и пишите на нем
    Ответ написан
    1 комментарий
  • Вопрос о подстраничной навигации wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Не путайте шаблон со типами записей (Страницы, Записи, Кастомные типы записей и т.д.).
    Не помещал бы увидеть код постраничной навигации... А так могу посоветовать изучить WP_Query и вывести навигацию...
    https://wp-kama.ru/function/wp_query#parametry-kat...
    https://wp-kama.ru/question/paginatsiya-v-wp_query
    Ответ написан
  • Корзина обнуляется при второй перезагрузке страницы, В чем может быть проблема?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Может конфликт плагинов? например, плагин мультиязычности. который добавляет /en_GB/ и вукомерц...
    Ответ написан
    Комментировать
  • Как через ACF вывести товары с Woocommerce?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Не уверен, что вам нужны кастомные поля.... Вам скорее нужно изучить WP_Query
    В аргументах передать taxonomy => 'product_cat'
    https://wp-kama.ru/function/wp_query#parametry-kat...
    Ответ написан
  • Какой плагин WordPress использовать для киноафиши?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Вы не предоставили информацию какие поля должны быть.... но могу предложить сделать все через кастомные поля (ACF или carbon fields).
    Установите плагин или фреймворк по вкусу, а далее создайте нужные вам кастомные поля, создайте шаблон страницы и выведите в нужном виде.
    Возможно, что вам также потребуется ACF Repeater (например, для каждого фильма сможете повторять кастомные поля)...
    Ответ написан
    Комментировать
  • Как вывести объект записи ACF?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Не помешало бы сообщить, где именно вы хотите его вывести.
    Например, если вы создали flexible content в качестве опции (например, для раздела "Параметры темы") пример - https://www.advancedcustomfields.com/add-ons/optio...
    то вам нужно передать в flexible content 'option'
    Если вы выводите его на одной странице в админке, а хотите отобразить на другой странице, то вам нужно передать туда ID страницы
    А если вы отображаете в админке и выводите на той же странице, то ничего не надо указывать.

    Здесь, приведен пример flexible content -
    https://www.advancedcustomfields.com/resources/fle...

    Также рекомендую включить дебаг в wp-config.php и глянуть рнр ошибки.
    Также попробуйте на всякий случай обновить плагин. У меня например в ACF Pro flexible content идет внутри плагина. И все работает.

    Ну и --- the_sub_field() равно echo get_sub_field()
    Ответ написан
    Комментировать
  • В плагине WP можно нарисовать инфографику?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Если нужны платные плагины, то Visual Composer + Ultimate Addons
    Демо тут - https://ultimate.brainstormforce.com/

    А так можно всегда сверстать на html + css. Подойдет даже flexbox или CSS Grid. А если хотите еще и из админки изменять. то плагином ACF создайте кастомные поля и все.
    Ответ написан
    Комментировать
  • Как запретить вывод произвольных типов записи?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    В коде при создании кастомного типа записи:
    public => false
    has_archive => false
    publicaly_queryable => false
    Источник - https://wordpress.stackexchange.com/questions/7446...
    Ответ написан
    1 комментарий