• Как в Wordpress вывести список страниц с дополнительным полем вместо названия страницы?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Код представленный ниже нужно вставить в functions.php вашей темы. Это функция, которая добавляет шорткод [cities], который вы можете поставить там где нужно. У шорткода есть два атрибута parent, чтобы указать ID родительской страницы и key - чтобы можно было вывести не только town_name, но и любое другое поле

    Вариант применения: [cities parent=123]

    // Add Cities Shortcode
    function cities_shortcode( $atts ) {
    
    // Список возможных параметров шорткода: родительская страница и имя поля, значение которого нужно вывести
    	$atts = shortcode_atts(
    		array(
    			'parent' => '',
    			'key' => 'town_name'
    		),
    		$atts
    	);
    
    	// Задаем параметры WP_Query, чтобы получить список всех нужных страниц в одном объекте
    	$args = array(
    	  'post_type'              => array( 'page' ),
    	  'post_status'            => array( 'publish' ),
    	  'post_parent' => $atts[parent]	
    	);
    
    	//Объект WP_Query	
    	$page_query = new WP_Query( $args );
    	
    	//Обертка для всех элементов, которые получатся, можно вставить свои классы
    	$result_start = '<ul class="cities-list">';
    	$result_end = '</ul>';
    	
    	//Цикл, выводим все города
      	while ( $page_query->have_posts() ):
        	$page_query->the_post();
    		$post_id = get_the_ID(); //ID Страницы
    		$city_name = get_post_meta( $post_id, $atts[key], true ); //Название города
    		$result = $result  . '<li class="cities-item"><a href="' . get_the_permalink() . '">' . $city_name . '</a></li>'; //Название города, ссылка, + обертка из <li>
      	endwhile;		
    	
    	wp_reset_postdata();	
    	
    	return $result_start . $result . $result_end;
    }
    
    add_shortcode( 'cities', 'cities_shortcode' );
    Ответ написан
    5 комментариев
  • Как правильно отключить анимацию scrollmagic под мобильные разрешения?

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

    Вот что есть на стак-оверфлоу: https://stackoverflow.com/questions/44935111/disab...

    А вот что получилось у меня:

    jQuery(window).on('resize', function(){
    
        const width = jQuery(window).width();
    
        if( width <= 640 ){
          //Отключаем сцену если разрешение экрана меньше указанного
          scene.enabled(false);
        } else {
          //Включаем опять, когда возвращаемся в нормальное состояние
          scene.enabled(true);
        }
    });
    Ответ написан
    Комментировать
  • Какой есть хороший видеокурс по Adobe Illustrator для новичка?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    На полный курс не тянет, но часть тем (цвет, прозрачность, кисти, панель Appearence -- разобраны очень подробно)
    https://www.youtube.com/playlist?list=PL26C18DA9EB...
    Ответ написан
    1 комментарий
  • Как задать бекграунд div'у в кастомных полях ACF?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    В настройках поля imageback можно указать будет ли отдаваться весь массив данных картинки или только url

    Вариант с Массивом (дефолтный):
    <div class="page-title" style="background-image: url(<?php $image = get_field('imageback'); echo $image[sizes][large] ?>);">

    Вариант с URL:
    <div class="page-title" style="background-image: url(<?php the_field('imageback') ?>);">
    Ответ написан
    Комментировать
  • Как правильно подгрузить свои стили и js в уже в готовый шаблон wordpress?

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

    1. Техника безопасности. Перед началом редактирования сайта -- сделайте полный бэкап, например с помощью WP All in One Migration, чтобы в случае чего полностью откатиться назад.

    2. Если ваш сайт работает на основе готовой темы — имеет смысл перед доработкой / внесением изменений (создание страницы с отдельным шаблоном — это именно оно) создать дочернюю тему. Это позволит а) разделить ваши доработки и то что было до вас б) при обновлении темы изменения не исчезнут в) всегда можно отключить дочернюю тему, если что-то сломали
    Плагин для создания дочерних тем: https://wordpress.org/plugins/orbisius-child-theme...

    3. После того как вы создали дочернюю тему. Вам нужно создать новый файл шаблона. Например page-main.php (название файла, в целом, не важно). И главное в этом файле в первой строчке написать <?php //Template Name: Название вашего шаблона ?>. В этом случае файл будет восприниматься как шаблон страницы и в интерфейсе редактирования страницы у вас появится возможность выбрать этот шаблон

    4-А. Если ваш дизайн никак не бьется с основным дизайном сайта, можно в файле page-main.php после первой строчки просто вставить целиком верстку.

    4-Б. Если на вашей странице шапка и подвал такие же как на сайте, тогда ваш файл будет выглядеть так

    <?php //Template Name:  Название вашего шаблона ?>
    <?php get_header(); ?>
    
    Здесь может идти любая ваша верстка
    
    <?php get_footer(); ?>


    Для правильной установки ваших скриптов и стилей -- скопируйте их в папку с темой и подключите их, прописав в файле functions.php вашей дочерней темы как это описано у Евгения выше

    5. Создайте страницу в интерфейсей WordPress и выберите для нее созданный шаблон. Посмотрите, если результат правильный -- назначьте эту страницу главной
    Ответ написан
    Комментировать
  • Статический сайт и динамический блог? легкие динамический страницы?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Скорость загрузки это проблема «обвеса» в виде тем и плагинов, а не самого WordPress.

    Для вашей задачи подойдут стартовые темы на основе Bootstrap. «Стартовая тема» означает, что в ней нет лишнего оформления, и содержится только базовый функционал WordPress и необходимые файлы. Такая тема предназначена для дальнейшего изменения и доработки под конкретную задачу.

    Посмотрите на стартовую тему _Tk. Установив тему вы получите все преимущества как WordPress так и Bootstrap

    • Сетка, компоненты и модули Bootstrap уже установлены на сайте
    • У вас уже созданы отдельные файлы под Шапку, подвал, запись блога, страницу, архивы и т.д.
    • Для меню, виджетов, наполения страниц и много другого уже есть админка
    • Вы можете воспользоваться плагинами кеширования для ускорения загрузки сайта
    Ответ написан
    Комментировать
  • Как загрузить изображение из админки в карусель на wordpress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Тут выше правильно отметили ACF PRO, он крайне удобен для создания интерфейса кастомных слайдеров
    Лицензия Advanced Custom Fields PRO стоит 25$, это разумные деньги если планируете использовать весь функционал

    В вашем случае, если нужно добавлять только картинки в слайдер, можно пойти проще.
    1) С помощью бесплатного плагина Advanced Custom Fields (без приставки ПРО) создайте группу кастомных полей типа Изображение. Для простоты в настройках поля укажите Ссылка на файл.
    slider-image-1
    slider-image-2
    ...
    slider-image-10 (Делаю допущение, что в слайдере не более 10 фото)

    2) Назначьте созданную группу для шаблона страницы или типа записи, где у вас выводится слайдер. На странице редактирования страницы у вас появятся 10 полей для вставки изображений, добавьте их.

    3) В шаблоне, где у вас прописан статический слайдер, найдите див, который является оберткой для слайдов и вместо html-кода нескольких слайдов вставьте php-код, чтобы соединить слайдер с acf-полями:

    <?php
    //Счетчик, чтобы пройти все 10 картинок
    $counter = 1; 
    
    //Создаем цикл, чтобы обойти все десять полей
    while ($counter < 11):
       //Собираем название acf-поля для каждой итерации
       $acf_field = 'slider-image-' . $counter; 
     
       //Проверяем, что картинка в поле загружена и только в этом случае выводим слайд   
      if (get_field($acf_field)): 
         //Здесь начинается верстка вашего слайда, у меня условный пример
         echo '<div class="slider-item">'; 
         echo '<img src="' . get_field($acf_field) . '">';
         echo '</div>';
      endif; 
    
    //Увеличиваем счетчик на 1
    $counter++;
    endwhile;
    ?>
    Ответ написан
    4 комментария
  • Хороши ли корструкторы для создания сайта?

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


    Минусы конструкторов
    • Если мало опыта и нет вкуса в результате получится говно
    • Намного сложнее делать сайт по готовому дизайну, так как нужно создавать свои или переназначать существующие блоки
    • При прочих равных сайт на конструкторе более тормозной чем хорошо написанный сайт под конкретную задачу
    • Удобство для пользователя для дальнейшего использования / наполнения


    Если вы начинающий веб-разработчик, то нет ничего плохого в использовании конструкторов. Полезно разобраться в одном из популярных конструкторов (скажем Elementor или Visual Composer), это поможет сократить время на разработку/наполнение в некоторых случаях.

    Но это не полноценная замена умению программирвоать
    Ответ написан
    Комментировать
  • Не выводится php-код ниже цикла while, в чем проблема?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    У вас ошибка в синтаксисе PHP, соответственно все что ниже не обрабатывается

    Навскидку ошибка в этой строке:
    echo "<a class='popup-link' href=" . $field_value . "><img src=" . $field_value . "></a>";


    Попробуйте так:
    echo '<a class="popup-link" href="' . $field_value . '"><img src="' . $field_value . '"></a>';
    Ответ написан
    Комментировать
  • Как можно реализовать данное на Wordpress'e?

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

    Если первый вариант вам не подойдет и нужно, чтобы все загружалось и фильтровалось на одной странице с красивой анимацией — подключите к сайту Isotope (https://isotope.metafizzy.co/)

    Вот пример реализации с применением Изотопа:
    fithitcompany.ru/partners
    Ответ написан
    Комментировать
  • Как выводить по определенной структуре посты в WP?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Здравствуйте
    Для начала пример стандартного цикла Вордпресса
    <div class="items">
    <?php while (have_rows()): the_row(); ?>
      <div class="item"></div>
    <?php endwhile; ?>
    </div><!-- items -->


    Теперь вариант если нужно вывести по 6 штук
    echo '<div class="items">';
    //Зададим переменную, которая будет считать количество элементов 
    $counter = 1; 
    
    //Стандартный цикл Вордпресс
    while (have_rows()): the_row(); 
      //Сделаем проверку на начало группы из 6-ти элементов 
      if ($counter == 1): 
        //Выводим открывающий тег группы
        echo '<div class="items-wrapper">'; 
      endif;
    
      //Выведем элемент в цикле
      echo '<div class="item"></div>';
    
      //Сделаем проверку на конец группы из 6-ти элементов
      if ($counter == 6): 
        //Выводим закрывающий тег группы
        echo '</div><!-- items-wrapper -->'; 
        //Если группа закончена, приводим счетчик опять к единице
        $counter = 1; 
      else: 
      // Увеличиваем счетчик на единицу после каждого элемента 
      $counter++; 
      endif;
    endwhile; 
    
    //Если цикл вордпресс закончился, а группа не завершена добавляем закрывающий див
    if ($counter != 1): 
     echo '</div><!-- items-wrapper -->';
    endif; 
    
    echo '</div><!-- items -->';
    Ответ написан
  • Как сделать галерею с ограниченным количеством превью?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Вот нормальная галерея: fancyapps.com/fancybox
    Пример реализации: formuladoma74.ru/nedvizhimost/obekty-na-stadij-str...

    Как вариант может подойти вот этот плагин: https://www.wonderplugin.com/wordpress-lightbox/
    Ответ написан
    Комментировать
  • Почему по разному выводит латиницу и кириллицу?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Шрифт, который используется в теме не поддерживает кириллицу
    Ответ написан
  • Как вывести содержимое макета Advanced Custom Field?

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

    //get_field() — возвращает значение поля
    $param = get_field('field_name',$post_id);
    
    //the_field() — выводит значение поля в html
    the_field('field_name',$post_id);


    Вот только меня смущает название вашего блока, что-то здесь не так
    Ответ написан
    Комментировать
  • 2 Шаблона поста Wordpress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Я понял задачу следующим образом: выводить карточки постов в двух разных шаблонах по очереди. Если задача другая, поправьте.

    Находим в теме нужный файл шаблона (например index.php) и цикл Вордпресса, он будет выглядеть примерно так:

    while (have_posts): the_post();
      //Загружаем шаблон записи
      get_template_part('content', 'single');
    endwhile;


    Наша задача — сделать так, чтобы в одном случае грузился один шаблон во втором случае второй. Для этого создадим файлы шаблонов, например template-one.php и template-two.php и переместим туда вашу верстку/код. Поменяем цикл Вордпресса таким образом, чтобы шаблоны выбирались по очереди

    //Добавим переменную-счетчик, чтобы различать четные и нечетные посты
    $counter = 0;
    while (have_posts): the_post();
      //добавим проверку на четность
      if ( $counter % 2 == 0 ):
         //загружаем первый шаблон для четных 
         get_template_part('template', 'one');
      else:
        //загружаем второй шаблон в другом случае
         get_template_part('template', 'two');
      endif;
      $counter++;
    endwhile;
    Ответ написан
    1 комментарий
  • Через Advanced Custom Fields можно добавить доп. поля к page (изображения)?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    У вас на скриншоте нативные кастомные поля Вордпресса, не ACF.
    Чтобы использовать ACF вам нужно (после установки плагина):
    1) В меню админки Ворпдесса найти пункт Группы полей
    2) Создать новую группу полей
    3) Добавить в группе нужное количество acf-полей разных типов
    4) В настройках группы указать где данные поля будут показываться (по типу записей, конкретной странице и т.д.)

    Надеюсь ответил
    Ответ написан
    Комментировать
  • Что проще (или как правильнее), изучить Wordpress или научится писать свой движок на php?

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

    Написать все это на чистом php потребует времени, и скорее всего вы не один раз заглянете на Тостер, СтэкОверфлоу или подобные сайты. Так как вы будете писать решение первый раз в нем будут дыры в безопасности и гарантированно сомнительный интерфейс (вряд ли в команде у вас есть ux-дизайнер)

    В Вордрессе вы получаете все необходимые возможности CMS из коробки, плюс сотни полезных и готовых решений в виде форм подписки, гугл- и яндекс карт, социальных кнопок, галерей, попапов и много чего другого что пригодится при развитии проекта.

    Изучение WordPress != изучению php, это разные пути развития. В php вы пишите чистый код, в вордпрессе используете функции более высокого порядка на которые люди до вас за 15 лет развития системы потратили десятки тысяч человеко-часов
    Ответ написан
    1 комментарий
  • Как натягивать кастомные страницы на Wordpress?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Может уже не актуально, но попробую ответить развернуто

    1) Для начала вам понадобится стартовая тема. Это специальный вид тем для WordPress, который не имеет своего дизайна или он минимальный и заточены под то, чтобы их редактировать и делать сайты. Например тема Underscores

    2) Начните редактировать тему. Перенесите стили в style.css, шапку и подвал сайта в header.php и footer.php соответственно.

    3) Если шаблоны страниц разные, то имеет смысл создать файлы (я обычно называю по такому принципу) page-contacts.php, page-history.php и т.д. Важно каждый файл должен начинаться с <?php //Template Name: Имя Шаблона ?> тогда Вордпресс поймет, что это шаблон страницы

    3Б) Затем в админке создаете соответствующие страницы и назначаете им шаблоны. Чтобы дать возможность пользователю загружать контент по частям (вот логотип, заголовок, список услуг, карта и т.д.) -- воспользуйтесь плагином Advanced Custom Fields
    Ответ написан
    Комментировать
  • Как предотвратить "ломание" страницы при изменении ее ширины в Bootstrap 4?

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    Общий ответ: использование Media Queries, т.е. в CSS вы прописываете отдельные правила для конкретного размера экрана. Например можно сделать текст логотипа поменьше, убрать или сузить строку поиска и т.д. для промежуточных разрешений, например c 768 до 1200 пикселей.

    Выглядеть будет примерно так:

    @media (min-width: 768px) and (max-width: 1200px) {
    .logo {
     font-size: 14px
    }
    
    .search-bar {
     display: none
    }
    }


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

    solidcreature
    @solidcreature
    Развиваю сообщество WordPress в Москве
    В Настройках / Чтение -- выберите статическую страницу, которую хотите сделать главной и выберите другую страницу, которая будет заменена на страницу с постами
    5b33396bea53d286655228.png
    Ответ написан
    Комментировать