Ответы пользователя по тегу WordPress
  • Как вывести значение массива в functions из ACF при регистрации шорткода?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Для начала посмотрите структуру массива, например так
    $pliusi = get_field('pliusi');
    print_r($pliusi);

    Получите в выводе строку примерно такого содержания: Array( key_1 => value1, key2 => some_value )

    После этого, обратиться к элементам массива, зная соответсвующие ключи
    echo  '<div class="pliusi">'.  $pliusi["key_1"] . '  ' . $pliusi["key2"]  .'</div>
    Ответ написан
  • Как вывeсти страницы worpress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте. Попробуйте добавить в начало цикла setup_postdata($page); и не забудьте wp_reset_posdata(); после окончания цикла
    Ответ написан
    Комментировать
  • Как в Advanced Custom Fields вывести 3 ссылки через "Group"?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте, если у вас есть группа some_group с 3-мя полями first, second, third, то для вывода ссылок можно использовать следующий код:
    $some_group = get_field('some_group'); 
    //Переменная $some_group это ассоциативный массив, 
    //где ключ равен названию поля, а значение элемента массива 
    //равно значению внутри поля
    
    $link1 = $some_group['first'];
    $link2 = $some_group['second'];
    $link3 = $some_group['third'];


    Чтобы посмотреть структуру любого массива и понять как обращаться к его элементам я обычно использую
    print_r($some_array);
    Ответ написан
    Комментировать
  • Можно ли с одного основного шаблона подключать разные шаблоны по условию?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте, да такое возможно, надо только правильно подобать условные тэги (https://wp-kama.ru/id_89/uslovnyie-tegi-v-wordpres...). Единственный момент, я бы цикл WordPress разметил внутри основного шаблона и проверку бы делал внутри цикла.

    Несколько примеров
    <?php
      while ( have_posts() ): the_post();
       //Вывод постов на главной странице
       if ( is_home() ) { ... }
    
       //Вывод шаблона одной записи
       if ( is_single() ) { ... }   
    
      //Выбор шаблона для конкретной записи
      if ( $post->ID == 15 ) { ... }   
    
      //Выбор по шаблону страницы
      if ( is_page_template('my_page.php') ){ ... }
    
      endwhile;
    ?>
    Ответ написан
    Комментировать
  • Как посадить многостраничный сайт на wordpress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте, Дмитрий.
    Одно из простых решений — использовать шаблоны страниц. Чтобы создать новый шаблон страницы достаточно в теме создать новый php-файл и добавить в начале следующий код: <?php //Template Name: Название шаблона. Шаблон автоматически станет доступен для выбора при редактировании / создании страницы.

    Таким образом можно создать шаблоны для всех разделов многостраничного сайта. По умолчанию в WordPress у страницы только 2 основных поля для заполнения Заголовок и Контент. Но с помощью плагина Advanced Custom Fields можно добавить дополнительные поля, чтобы удобно было управлять контентом для разных шаблонов.
    Ответ написан
    9 комментариев
  • Как вывести данные нескольких пользователей полученных с помощью ACF?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    В предыдущем варианте у нас был массив с данными пользователя. Если пользователей указано несколько, то get_field вернет массив, каждый элемент которого является массивом. Для перебора элементов массива воспользуемся циком foreach. Получим следующий код:

    <?php 
       $current_user = wp_get_current_user(); 
       $managers = get_field('your_manager', 'user_' . $current_user->ID); 
    
       foreach($managers as $usermassive) {
          echo '<ul>';
            echo '<li>' . $usermassive['user_firstname'] . ' ' . $usermassive['user_lastname']  . '</li>';
            echo '<li>' . $usermassive['user_email'] . '</li>';
          echo '</ul>';    	
       }
    ?>
    Ответ написан
    Комментировать
  • Почему не работает редирект в вордпресс?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Чтобы редирект работал он должен вызываться до get_header(), возможно в этом проблема
    Ответ написан
  • Как скрыть некоторые значения из массива?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте.
    В вашем случае код должен выглядеть несколько по-другому

    <?php 
        $current_user = wp_get_current_user(); 
        $usermassive = get_field('your_manager', 'user_' . $current_user->ID); 
    
        echo '<ul>';
          echo '<li>' . $usermassive['user_firstname'] . ' ' . $usermassive['user_lastname']  . '</li>';
          echo '<li>' . $usermassive['user_email'] . '</li>';
        echo '</ul>';    	
    ?>

    Указанный код выведет в первой строке Имя и Фамилию и почту во втором элементе

    Если вам нужен логин, то конструкция будет сложнее, так как в $usermassive этих данных нет
    <?php
        $manager_id = $usermassive['ID'];
        $manager_data = get_userdata($manager_id);
        $manager_login = $manager_data -> user_login;
    Ответ написан
    6 комментариев
  • Как загрузить картинки WordPress не меняя пути в коде?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте, есть 2 варианта ответа на ваш вопрос.

    Первый вариант решения неправильный, но в точности отвечает на ваш вопрос. Допустим у вас все картинки расположены в папке images и в верстке прописаны относительный пути <img src="/images/image_1.jpg">, тогда можно разместить папку images в корне сайта и, по идее, должно заработать. Важно, это очень кривой способ, нет адекватных причин к нему прибегать.

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

    Коллега выше предложил использовать функцию get_template_directory_uri(), c этой функцией все хорошо, но код получается громоздким, я обычно делаю обертку, добавляя следующую функцию в functions.php:
    function theme_image($image) {
      $image_url = get_template_directory_uri() . '/images/' . $image;
      echo  $image_url;
    }

    Код в верстке тогда становится лаконичным:
    <img src="<?php theme_image('image_1.jpg'); ?>">
    Ответ написан
  • Подключение скриптов в WordPress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте. Здесь должны помочь условные теги WordPress в частности проверка на конкретную страницу или шаблон.

    Допустим, Слик слайдер нужен только на странице c шаблоном page-slider.php, тогда код будет выглядеть следующим образом:

    <?php
        add_action('wp_enqueue_scripts', 'mk_scripts', 'mk_scripts_slick');
        function mk_scripts() {
            wp_enqueue_style('mk-style', get_stylesheet_uri());
            wp_enqueue_script('mk_scripts', get_template_directory_uri() . '/assets/js/app.js', array(), null, true);
    
            if (is_page_template('page-slider.php')):
              wp_enqueue_script('mk_scripts_slick', get_template_directory_uri() . '/assets/js/slick.js', array('jquery'), null, true);
            endif;
        };
    ?>
    Ответ написан
    Комментировать
  • Как в wordpress добавлять или редактировать элементы html?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте. Подобную можно решить с помощью плагина Advanced Custom Fields. В нем очень легко настроить интерфейс в котором вы бы могли задавать Value Option и Содержание каждого DIVа и привязать это к конкретной странице или шаблону.

    1) Устанавливаете плагин Advanced Custom Fields
    2) Создаете новую группу полей и привязываете ее к шаблону или конкретной странице
    3) Создаете нужные поля. Например вот так:
    value_1, option_1, content_1
    value_2, option_2, content_2
    ...
    value_n, option_n, content_n

    В интерфейсе редактирования страницы это будет выглядеть вот так:
    5ffb500be0337726131672.png

    4) В шаблоне страницы меняете статический код на html + вставки php
    Было:
    <select>
      <option value="moscow">Москва</option>
      <option value="piter">Санкт-Петербург</option>
      <option value="kazan">Казань</option>
    </select>
    <div class="moscow">Что-то о Москве...</div>
    <div class="piter">Что-то о Питере...</div>
    <div class="kazan">Что-то о Казани...</div>


    Стало:
    <select>
      <option value="<?php the_field('value_1'); ?>"><?php the_field('option_1'); ?></option>
      <option value="<?php the_field('value_2'); ?>"><?php the_field('option_2'); ?></option>
      <option value="<?php the_field('value_3'); ?>"><?php the_field('option_3'); ?></option>
    </select>
    <div class="<?php the_field('value_1'); ?>"><?php the_field('content_1'); ?></div>
    <div class="<?php the_field('value_2'); ?>"><?php the_field('content_2'); ?></div>
    <div class="<?php the_field('value_3'); ?>"><?php the_field('content_3'); ?></div>


    Специально не стал использовать циклы, чтобы изменения в коде были более наглядны. Функция the_field() позволяет вывести в шаблоне значения любого поля, заданного на странице.
    Ответ написан
    3 комментария
  • Как не в базовой странице wordpress сделать цикл для вывода постов?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте. Тут есть несколько вариантов
    1) Если у вас статьи -- кастомный тип записи, например article, то в этом случае будет достаточно переименовать articles.php в archive-article.php. Вордпресс сам подхватит данный шаблон и будет его использовать для страницы вывода записей типа article.

    2) Если статьи у вас -- это обычные записи (post). То при условии, что внутри шаблона article.php вы используете цикл Вордпресса, то можно переименовать article.php в archive.php и записи будут выводиться с использованием вашего шаблона. Не забудьте в настройках сайта указать страницу вывода записей.

    3) Если варианты 1 и 2 вам не подходят. Тогда для вывода записей используйте класс wp_Query. Его синтаксис очень похож на стандартный цикл, но позволяет вывести именно то, что вам нужно в конкретном шаблоне.
    Подробнее о wp_Query на сайте wp-kama.ru
    Ответ написан
    Комментировать
  • Как добавить формы подписки в виджет?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте, шорткод ContactForm 7 отлично работает в виджете Текст.
    Ответ написан
    Комментировать
  • Как сделать правильный обратный счетчик и появление контента?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте. jQuery запускается в WordPress в compatibility mode и $ не работает. Поэтому простое копирование решений из интернета часто не помогает. Судя по логу, это ваш случай.

    Как обойти #1
    jQuery(document).ready(function($){
      //Код из интернета с использованием jQuery
    });


    Как обойти #2
    Обычно делаю проще и перед кодом с $ пишу следующую строчку
    $ = jQuery;
    Ответ написан
  • Как рациональней выводить баннеры с возможностью менять из админки?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте. Тут есть несколько вариантов
    1) Если в вашей теме предусмотрены сайдбары в нужных местах, вполне могут подойти виджеты. Для этого будет достаточно сформировать html-код и вставить его в нужный сайдбар.

    2) Второй вариант использовать записи, как контейнеры для баннеров. Например, можно использовать свойство sticky (прилепленный пост), для вывода именно рекламных баннеров. Или задать постам с рекламой опредленный формат вывода, который вы не будете использовать для обычного контента. Скорее всего потребуется допилка темы, или, как минимум, изменение CSS.

    3) Добавить настройки в Кастомайзер или добавить ACF-поля. В этом случае потребуется редактировать шаблон главной страницы. Кастомайзер более нативное решение, но требует больше знаний / навыков разработки под Вордпресс. Под ACF -- написал несколько заметок, на решение схожей с вашей задачи: wpfolio.ru/category/acf
    Ответ написан
    1 комментарий
  • Как настроить новый тип записей, свои файлы, ссылки, WP?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Добрый день.
    Как настроить отдельные категории для книг?
    - Создать новую таксономию, скажем 'book-category'
    - Строку 'taxonomies' => array('post_tag','category'), заменить на 'taxonomies' => array('book-category'),

    Как создать файл single-book.php?
    Надеюсь правильно понял суть вопроса.
    - Создать файл на сервере можно через фтп-клиент, в веб-интерфейсе хостинга, с помощью плагина

    Для создания новых типов данных и новых таксономий -- есть отличный сервис, который помогает сгенерировать нужный код: https://generatewp.com
    Ответ написан
    Комментировать
  • Где можно найти хороший урок по "натягиванию" вёрстки на WP (подробности в описании)?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте, посмотрел недружелюбные комментарии под вопросом, удивился, решил написать.
    Нормально все вы спрашиваете, странно что у людей бомбануло.

    Вот несколько роликов, которые надеюсь будут в тему:
    1) Создание слайдера на бутстрапе с помощью плагина ACF Pro
    https://youtu.be/N1H_F-ycnKw
    т.е. мы реализуем настраиваемый слайдер, который можно добавить в любую тему

    2) Подробный разбор плагинов ACF и ACF Pro (запись вебинара)
    https://youtu.be/yiMTB-FQg0g
    ACF — один из основных инструментов для переноса верстки на WordPress

    3) Первый ролик (надеюсь получится серия) по процессу натягивания верстки на WordPress
    https://youtu.be/Mj1hGgfFyKo

    Задавайте вопросы
    Ответ написан
    2 комментария
  • Тема на WordPress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте, Михаил
    Увидел ваш комментарий к предыдущему ответу, и возможно, понял в чем проблема. Вы взяли за основу стартовую тему _underscores, которая имеет много достоинств, но слишком громоздкая/сложная для создания небольших неблоговых проектов.

    1) Используйте шаблоны страниц, как основу для вашего проекта. Создайте файлы типа page-about.php, page-services.php ... Т.е отдельная верстка под каждую уникальную страницу. Чтобы эти файлы "подцепились", нужно прописать, что это шаблоны страниц, для этого в первой строчке каждого файла укажите <?php //Template Name: Название шаблона ?>

    2) Для того чтобы соединить контент и верстку используйте плагин Advanced Custom Fields. Он позволит создать нужное количество различных полей для управления всеми частями страницы.

    Вот что видно на фронте:
    5da98a0e2461d716327853.jpeg

    Вот как выглядит управление в админке:
    5da98a5fa8d81402307496.png

    Вот код для верхнего баннера:
    5da98ab219b35115012681.png
    Вместо конкретной надписи стоит вызов функций the_field() (плагин ACF)

    3) В принципе, можно не брать стартовую тему за основу, а создать свою на основе готовой верстки.
    Ответ написан
  • Хорошо ли плагины работают с кастомными темами в WordPress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Скажу даже больше, можно взять любой html-шаблон, превратить его в тему WP, а дальше пользоваться всеми преимуществами готовых решений.

    Использование виджетов - не единственная возможность. Функционал любой кастомной темы отлично расширяется с помощью шорткодов.
    Ответ написан
    Комментировать
  • Есть ли плагины (решения) для внесения изменений в тему Wordpress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    1) Для внесения изменений в уже готовые темы есть дочерние темы

    2) Для натяжки своего дизайна на Вордпресс лучше подойдут стартовые темы

    3) Не знаю чем вызвана ваша плагинофобия. В коммерческой разработке не является предосудительным использовать готовые решения.
    3.1 Например, тот же Элементор позволяет создавать собственный дизайн независимо от текущей темы
    3.2 Вот интересное решение, которое поможет "сэкономить" на программировании https://toolset.com/
    3.3 Сам работаю на связке Advanced Custom Fields Pro + Стартовая тема на Bootstrap

    4) На что стоит обратить внимание и изучить:
    А) Иерархия шаблонов вордпресс. Правильно названный файл -- и вам ненужно писать десяток строчек кода.
    https://wp-kama.ru/id_7654/ierarhiya-fajlov-temy-s...

    Б) Базовые функции WordPress, которые используются в шаблонах
    https://wp-kama.ru/handbook/cheatsheet

    В) Фреймворк для фронт-энда, например тот же Бутстрап

    Г) Плагины для кастомизации бэкенда, для удобного управления сайтом/контентом. ACF, Carbon Fields, Types, тысячи их.

    5) Бонусом, полезный сайт: https://generatewp.com/
    Ответ написан