• Как в advanced custom fields сделать возможность добавления блока?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Если не ACF PRO то как вариант можно сделать кастомный тип записи отзывы и вывести его там где нужно с помощью wp_Query. В файле functions:
    Засунул под спойлер

    // Register Testimonials Post Type
    function testimonials_post_type() {
    
    	$labels = array(
    		'name'                  => _x( 'Testimonials', 'Post Type General Name', 'youth-worker' ),
    		'singular_name'         => _x( 'Testimonial', 'Post Type Singular Name', 'youth-worker' ),
    		'menu_name'             => __( 'Testimonials', 'youth-worker' ),
    		'name_admin_bar'        => __( 'Testimonials', 'youth-worker' ),
    		'archives'              => __( 'Testimonial Archives', 'youth-worker' ),
    		'attributes'            => __( 'Testimonial Attributes', 'youth-worker' ),
    		'parent_item_colon'     => __( 'Parent Item:', 'youth-worker' ),
    		'all_items'             => __( 'All Testimonials', 'youth-worker' ),
    		'add_new_item'          => __( 'Add New Testimonial', 'youth-worker' ),
    		'add_new'               => __( 'Add New', 'youth-worker' ),
    		'new_item'              => __( 'New Testimonial', 'youth-worker' ),
    		'edit_item'             => __( 'Edit Testimonial', 'youth-worker' ),
    		'update_item'           => __( 'Update Testimonial', 'youth-worker' ),
    		'view_item'             => __( 'View Testimonial', 'youth-worker' ),
    		'view_items'            => __( 'View Testimonials', 'youth-worker' ),
    		'search_items'          => __( 'Search Testimonial', 'youth-worker' ),
    		'not_found'             => __( 'Not found', 'youth-worker' ),
    		'not_found_in_trash'    => __( 'Not found in Trash', 'youth-worker' ),
    		'featured_image'        => __( 'Featured Image', 'youth-worker' ),
    		'set_featured_image'    => __( 'Set featured image', 'youth-worker' ),
    		'remove_featured_image' => __( 'Remove featured image', 'youth-worker' ),
    		'use_featured_image'    => __( 'Use as featured image', 'youth-worker' ),
    		'insert_into_item'      => __( 'Insert into item', 'youth-worker' ),
    		'uploaded_to_this_item' => __( 'Uploaded to this item', 'youth-worker' ),
    		'items_list'            => __( 'Testimonials list', 'youth-worker' ),
    		'items_list_navigation' => __( 'Testimonials list navigation', 'youth-worker' ),
    		'filter_items_list'     => __( 'Filter Testimonials list', 'youth-worker' ),
    	);
    	$args = array(
    		'label'                 => __( 'Testimonial', 'youth-worker' ),
    		'description'           => __( 'Post Type for testimonials', 'youth-worker' ),
    		'labels'                => $labels,
    		'supports'              => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'page-attributes', 'post-formats' ),
    		'hierarchical'          => false,
    		'public'                => true,
    		'show_ui'               => true,
    		'show_in_menu'          => true,
    		'menu_position'         => 30,
    		'menu_icon'             => 'dashicons-format-status',
    		'show_in_admin_bar'     => true,
    		'show_in_nav_menus'     => true,
    		'can_export'            => true,
    		'has_archive'           => true,
    		'exclude_from_search'   => false,
    		'publicly_queryable'    => true,
    		'capability_type'       => 'post',
    	);
    	register_post_type( 'testimonials', $args );
    
    }
    add_action( 'init', 'testimonials_post_type', 0 );



    на странице, где надо вывести:

    $testimonials = new WP_Query(array(
    	'post_type'      => 'testimonials',
    	'orderby'        => 'date',
    	'order'          => 'DESC',
    ));
    
    <?php if ( $testimonials->have_posts() ) : ?>
    
    	<?php while ( $testimonials->have_posts() ) : $testimonials->the_post(); ?>
    
    		<div class="testimonial-item">
    			blabla
    		</div>
    
    		<?php endif; ?>
    
    	<?php endwhile;?>
    
    <?php endif; wp_reset_postdata(); ?>
    Ответ написан
    2 комментария
  • Как осуществить такие ползунки в css и html?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Как по мне это у вас не ползунки, а прогресс бары в виде ползунков, судя по тому что в них написано
    Ответ написан
    Комментировать
  • Как переопределить определенные классы в html тегах в Woocommerce на свои и добавить свои html теги для элементов магазина?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Посадка своей верстки на woocommerce состоит как бы из двух основных действий.
    1. С помощью хуков и фильтров изменять разметку итд.
    2. Переопределение шаблона. Для этого у себя в теме создаете папку woocommerce и копируете в нее необходимые шаблоны из папки плагина с шаблонами. И меняете верстку уже там
    Первый способ предпочтительнее, но не всегда с помощью его можно решить все.
    Вот пример кода где создаются дополнительные обертки и переносятся кое-какие элементы
    Посмотреть внутри

    // отключение сайдбара
    remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
    
    // отключить хлебные крошки
    remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
    
    // добавить основной контейнер
    remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
    add_action( 'woocommerce_before_main_content', 'storm_output_content_wrapper_start', 10 );
    function storm_output_content_wrapper_start() {
    	?>
    	<div class="container-1000">
    	<?php
    }
    
    // закрыть основной контейнер
    remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10 );
    add_action( 'woocommerce_after_main_content', 'storm_output_content_wrapper_end', 40 );
    function storm_output_content_wrapper_end() {
    	?>
    	</div><!-- container-1000 -->
    	<?php
    }
    
    add_action( 'woocommerce_before_main_content', 'storm_archive_output_content_wrapper_start', 15 );
    function storm_archive_output_content_wrapper_start() {
    	if( is_shop() || is_product_category() ) {
    		?>
    		<div class="category-content">
    		<?php
    	}
    }
    
    add_action( 'woocommerce_before_main_content', 'storm_catalog_wrapper_start', 20 );
    function storm_catalog_wrapper_start() {
    	if( is_shop() || is_product_category() ) {
    		?>
    		<div class="catalog-list-wrapper">
    		<?php
    	}
    }
    
    //вывод хлебных крошек на странице архива
    add_action( 'woocommerce_before_main_content', 'storm_catalog_breadcrumbs', 25 );
    function storm_catalog_breadcrumbs() {
    	if( is_shop() || is_product_category() ) {
    		?>
    		<div class="breadcrumbs">
    			<?php woocommerce_breadcrumb() ?>
    		</div>
    		<?php
    	}
    }
    
    // вывод сортировки и кнопки переключателя фильтра
    remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
    add_action('woocommerce_before_shop_loop', 'storm_catalog_ordering', 30);
    function storm_catalog_ordering() {
    	?>
    	<div class="catalog-sorting-wrapper">
    
    		<button type="button" class="fixed-toggle filter-toggle" id="filter-toggle"><i class="fa fa-filter"></i><?php _e('Filter','storm-store') ?></button>
    
    		<div class="product-sorting">
    			<span class="product-sorting-label"><?php _e('Сортировать:','storm-store') ?></span>
    			<div class="select-wrapper">
    				<?php woocommerce_catalog_ordering() ?>
    			</div>
    		</div>
    	</div>
    	<?php
    }
    
    // Изменить стрелки пагинации
    add_filter( 'woocommerce_pagination_args', 'custom_woo_pagination' );
    function custom_woo_pagination( $args ) {
    	$args['prev_text'] = '<span class="fa fa-angle-left"></span><span class="sr-only">Previous page</span>'; 
    	$args['next_text'] = '<span class="fa fa-angle-right"></span><span class="sr-only">Next page</span>';
    	return $args;
    }
    
    // вывод пагинации
    remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 10 );
    add_action('woocommerce_after_shop_loop', 'storm_pagination', 10);
    function storm_pagination() {
    	?>
    	<div class="pagination-wrapper">
    		<?php woocommerce_pagination(); ?>
    	</div>
    	<?php
    }
    
    add_action( 'woocommerce_after_main_content', 'storm_catalog_wrapper_end', 15 );
    function storm_catalog_wrapper_end() {
    	if( is_shop() || is_product_category() ) {
    	?>
    		</div> <!-- catalog-list-wrapper  -->
    		<?php
    	}
    }
    
    add_action( 'woocommerce_after_main_content', 'storm_archive_output_content_wrapper_end', 30 );
    function storm_archive_output_content_wrapper_end() {
    	if( is_shop() || is_product_category() ) {
    	?>
    		</div><!-- category-content -->
    		<?php
    	}
    }

    Ответ написан
    Комментировать
  • Как реализовать расширенный поиск в woocommerce?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Фильтр по атрибутам. Например product filter for woocomnmerce от XforWoocommerce
    Он платный, но ни один бесплатный фильтр не сравнится, я перепробовал много
    Ответ написан
    3 комментария
  • Как сделать одинаковый отступ при разных блоках?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    На флексах такое поведение по умолчанию
    ul {
    	display: flex;
    	flex-wrap: wrap:
    	justify-content: space-between;
    }
    
    li {
    	width: 30%;
    }
    Ответ написан
    Комментировать
  • Как запросить файлы сайта для доработки?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Вот был похожий вопрос
    Ответ написан
    Комментировать
  • Как в slick slider сделать слайд обрезанным?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    в секции делаем два блока. один под текст, другой под слайдер. а слайдеру потом такие стили

    .slick-slide {
    	margin: 0 15px;
    }
    .slick-list {
    	margin: 0 -15px;
    	padding: 0 10% 0 0;
    }

    Конкретно тот, что с паддингом. там где маргины - это для отступов меж слайдов
    Ответ написан
    Комментировать
  • Как из H1 убрать подстановку слова например: категория?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    // Удаляет "Рубрика: ", "Метка: " и т.д. из заголовка архива
    add_filter( 'get_the_archive_title', function( $title ){
    	return preg_replace('~^[^:]+: ~', '', $title );
    });

    а в тайтле смотрите в сторону SEO плагина, Yoast seo по умолчанию такое добавляет
    Ответ написан
  • Почему элемент не выходит за пределы родителя?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Задайте карточкам или самим слайдам margin-bottom такого размера, чтобы влез ваш элемент.
    Если этот элемент не часть каждого слайда, то просто вынесите его за пределы слайдера и там спозиуионируйте его над слайдами
    Ответ написан
  • Как сделать масштаб в верстке?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Если абсолютно все размеры задать в rem, то вы можете менять масштаб изменяя лишь размер базового шрифта для html
    Ответ написан
    Комментировать
  • Что за отступы справа, на мобильных разрешениях?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Что-то шире чем мобильник. Пробуйте в отладчике по одному удалять секции разметки
    Ответ написан
  • Подключить скрипт перед jquery в WP?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    function mytheme_scripts() {
    
    	wp_deregister_script( 'jquery' );
    	wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery-1.11.2.min.js', array('custom-js'), null, true );
    	wp_enqueue_script( 'jquery');
    
    	wp_enqueue_script( 'custom-js', get_template_directory_uri() . '/assets/js/common.js', array(), null, true );
    }
    add_action( 'wp_enqueue_scripts', 'mytheme_scripts' );
    Ответ написан
    Комментировать
  • Что значит transform: translateX(-50%)?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Это сдвиг элемента по оси x влево на 50%.
    Часто применяется при выравнивании фиксированного элемента у которого неизвестна ширина по центру.
    Например:
    .modal {
      position: fixed;
      top: 10%;
      left: 50%;
      transform: translateX(-50%);
    }
    Ответ написан
    Комментировать
  • Почему выводится максимум 10 кастомных постов?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    При создании запросов WP_Query может получать предустановленные параметры, которые нужно учитывать. Например, запрос $query = new WP_Query( 'post_type=func' ); может вернуть только первые 10 записей типа func, а не все, как ожидается. Потому что предустановленный параметр posts_per_page=10, ограничивает количество получаемых записей до 10.
    Ответ написан
    9 комментариев
  • Почему письмо плохо отображается в десктопном клиенте?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Верстка писем это как отдельный вид мазохизма, между клиентами для писем столько отличий, что вручную очень сложно предсказать все возможные косяки. Я бы порекомендовал для верстки использовать фреймворк, сам остановился на MJML и в целом доволен. Освоить легко, через пару дней уже делал весьма приличные письма с адаптивкой

    5eff78a89d80f643999637.png
    Ответ написан
    2 комментария
  • Какую выбрать cms для сайта на html?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    У меня в свое время была работа с восстановлением сайтов из веб-архива, я помню эту жесть.
    Для статики есть интересный проект
    https://textolite.ru/
    Ответ написан
    Комментировать
  • Как вставить кнопку в хедер?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    У вас это место, тобишь контакты, выводится из админки Внешний вид > Меню, с помошью одного из меню, если их там несколько. Нужно найти его и добавить в меню пункт меню Произвольная ссылка или прямо выбрать до конкретной страницы, например, обратной связи. Название пишете Оставить заявку, ссылка или существующая, если добавили страницу или вручную куда надо. Также там можно добавить класс. Если такого пункта нет, то вверху страницы найдите кнопку Настройка экрана, там поставить галочку про класс. Класс задается тегу LI, которым обернута ваша ссылка. По классу можете стилизовать кнопку как вам угодно
    Ответ написан
    Комментировать
  • Как изменить настройку адаптивности в WPBakery WordPress?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Я тоже долго не мог понять.
    Собственно сюда как раз и берется значение из настроек ширины, которое сверху над адаптивностью.
    Допустим, нужно чтобы тут было тоже 6 колонок, тогда в настройках ширины так и пишете 6 колонок. А на планшете и десктопе выставляете как вам нужно, 4, например как стоит. Ну и у него идет сетка mobile-first, тоесть там где десктоп это значение и будет для любой ширины экрана больше чем десктоп
    Ответ написан
    1 комментарий