• Как так сверстать?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Я конкретно тут вообще не вижу проблемы.
    1. картинка бекграундом, поверх нее в сетке текст, который занимает 4 колонки
    2. Картинка абсолютом, поверх нее блок с все той же сеткой, 4 колонки которой занимает текст
    серое - бекграунд под картинкой или одновременно с ней
    Ответ написан
    Комментировать
  • Как создать одно кастомное поле сразу для всех страниц сайта на WordPress?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Если у вас платная версия ACF Pro, то там есть страница опций. Она сквозная.
    Для бесплатной версии точно так же берем поле, привязываем его к какойто странице, а выводим, передавая вторым аргументом id страницы.
    <?php the_field('field_name', id); ?>
    Если прям много настроек, заводим для этого отдельную страницу, называем ее опции, делаем ее приватной и пилим в нее все опции. Выводим ровно так же - вторым аргументом id страницы
    Ответ написан
    1 комментарий
  • Как правильно использовать .on?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    $( ".menuForm" ).on(
    "click", ".add_menu_item", function() {
        alert("AAAAAAAAAAAAAA");
    
        $(".AJAX-menu-loading").fadeIn(100);
        $(".menu-item").clone().appendTo(".menuForm");
        $(".AJAX-menu-loading").fadeOut(100);
    
    });
    Ответ написан
    5 комментариев
  • Почему не выводится список записей WP?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    оно немного не так работает. обратите внимание, что когда вы назначаете страницой блога вашу страницу у вас пропадает выбор шаблона и возможность ее редактировать.
    В этот момент шаблоном начинает использоваться index.php или если есть home.php.
    Если вы хотите использовать для блога шаблон с другим названием, например page-blog.php, то не назначайте его станицей вывода записей. оставьте там как было - Выбрать
    Ответ написан
  • Как в woocommerce создать собственный сайдбар?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    // отключение сайдбара
    remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
    
    add_action( 'woocommerce_sidebar', 'standart_sidebar', 10 );
    function standart_sidebar() {
      get_template_part( 'sidebar' );
      //get_sidebar();
    }

    оба варианта работают
    Ответ написан
  • Как поднять блок на самый верх?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    .home.blog .site-header, .home.page:not(.page-template-template-homepage) .site-header, .home.post-type-archive-product .site-header {
      margin-bottom: 0;
    }

    Скорее всего часть селекторов надо убрать, и оставить только те, которые относятся к главной странице, лазить по сайту и проверять лень
    Ответ написан
    1 комментарий
  • Как использовать WooCommerce со своей темой?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Вукомерс создает стандартные страницы, для которых используется шаблон page.php (да и собственно даже на шаблоне index.php должно работать, если нет нужных шаблонов) и вставляет туда шорткоды вывода информации, например на странице My Account должен быть шорткод [woocommerce_my_account]. Все должно работать без всяких переносов темплейтов из плагина. Вы чтото не так делаете
    Ответ написан
    8 комментариев
  • Как подключить три слайдера и карусель slick?

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

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

    Почитав комментарии, я не уверен, что вам это чтото даст, тем не менее у меня есть пример кода:
    Код

    <?php
    
    $actualLoop = new WP_Query(array(
    	'posts_per_page' => 5,
    	'post_type'      => 'post',
    	'orderby'        => 'date',
    	'order'          => 'DESC',
    	'meta_query'     => array(
    		array(
    			'key'     => 'is_actual',
    			'value'   => '1',
    			'compare' => 'LIKE',
    		)
    	),
    ));
    
    if ( $actualLoop->have_posts() ) : ?>
    
    <div class="sidebar-inner-right">
    	<h2 class="sidebar-title"><?php _e('Актуально') ?></h2>
    
    	<?php while ( $actualLoop->have_posts() ) : $actualLoop->the_post();
    		$is_actual = get_field('is_actual');
    	?>
    
    		<?php if ($is_actual): ?>
    
    		<a href="<?php the_permalink() ?>">
    			<div class="news-img-block">
    				<div class="img-wrapper">
    					<?php if (has_post_thumbnail()) {
    						the_post_thumbnail('blog-thumb');
    					}else{
    						echo '<img class="no-img" src="'. get_bloginfo('template_directory'). '/assets/img/no-thumbnail.jpg' . '" alt="no image">';
    					}?>
    				</div>
    				<h3 class="news-img-block-title"><?php trim_title_words(10, '...'); ?></h3>
    				<div class="news-block-info">
    					<div class="news-block-info-item news-block-date">
    						<?php echo theCustomDate() ?>
    					</div>
    					<div class="news-block-info-item news-block-views">
    						<?php _e('Переглядів:') ?> 
    						<?php echo getPostViews(get_the_ID()); ?>
    					</div>
    					<div class="news-block-info-item news-block-comments">
    						<?php echo num_comments() ?>
    					</div>
    				</div>
    				<div class="news-block-excerpt">
    					<?php echo kama_excerpt( array('maxchar'=>80) ); ?>
    				</div>
    			</div>
    		</a>
    
    		<?php endif ?>
    
    	<?php endwhile;?>
    
    </div>
    
    <?php endif; wp_reset_query(); ?>


    Сама разметка каждого итема понятно что будет своя.
    Тут мы имеем в каждой записи возможность установить чекбокс, это кастомное поле со слагом is_actual, в моем случае сделанное с помощью ACF. Если флажок установлен - запись будет выводится.
    Этот код я вставлял прямо в сайдбар
    Ответ написан
  • Wordpress: почему один из элементов меню перекидывает на главную страницу?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Если я правильно понял, то вы зарегистрировали новый тип записей works. Для того, чтобы сделать страницу, на которой выводить все записи типа works нужно сделать шаблон archive-works.php
    Ответ написан
  • Как сделать первый пост во всю ширину wordpress?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Если вы используете готовую тему, то сначала нужно создать дочернюю тему.
    Если тема ваша - то не обязательно.
    Найдите шаблон, который используется для вывода записей.
    Переопределите его в дочерней теме или правьте в вашей.
    Для того чтобы вывести первый пост другой версткой можно воспользоваться счетчиком:

    <?php if ( have_posts() ) : $ir = 0; while ( have_posts() ) : the_post();
    
    	if ( $ir == 0 ) {
    		get_template_part( 'template-parts/article-wide' );
    	} else {
    		get_template_part( 'template-parts/article' );
    	}
    
    $ir++; endwhile; endif; ?>
    Ответ написан
    Комментировать
  • Как разделить подкатегории и товары в Woocomerce?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    // Move WooCommerce subcategory list items into heir own <ul> separate from the product <ul>
    add_action( 'init', 'move_subcat_lis' );
    
    function move_subcat_lis() {
    	// Remove the subcat <li>s from the old location.
    	remove_filter( 'woocommerce_product_loop_start', 'woocommerce_maybe_show_product_subcategories' );
    	add_action( 'woocommerce_before_shop_loop', 'msc_product_loop_start', 40 );
    	add_action( 'woocommerce_before_shop_loop', 'msc_maybe_show_product_subcategories', 50 );
    	add_action( 'woocommerce_before_shop_loop', 'msc_product_loop_end', 60 );
    }
    
    //Conditonally start the product loop with a <ul> contaner if subcats exist.
    function msc_product_loop_start() {
    	$subcategories = woocommerce_maybe_show_product_subcategories();
    	if ( $subcategories ) {
    		echo '<ul class="archive-category-wrapper">';
    	}
    }
    
    //Print the subcat <li>s in our new location.
    function msc_maybe_show_product_subcategories() {
    	echo woocommerce_maybe_show_product_subcategories();
    }
    
    //Conditonally end the product loop with a </ul> if subcats exist.
    function msc_product_loop_end() {
    	$subcategories = woocommerce_maybe_show_product_subcategories();
    	if ( $subcategories ) {
    		echo '</ul>';
    	}
    }
    Ответ написан
    2 комментария
  • Можно ли использовать div сразу после row?

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

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Вот пример кода

    Кусок разметки
    <nav class="site-nav">
    	<ul id="navigation">
    		<li data-menuanchor="about-us">
    			<a href="#about-us" data-lang="about_academy">Про академию</a>
    		</li>
    		<li data-menuanchor="what-we-offer">
    			<a href="#what-we-offer" data-lang="proposal">Что мы предлагаем</a>
    		</li>
    		<li data-menuanchor="your-benefits">
    			<a href="#your-benefits" data-lang="your_result">Что ты получишь</a>
    		</li>
    		<li data-menuanchor="our-blog">
    			<a href="#our-blog" data-lang="blog">Блог</a>
    		</li>
    		<li data-menuanchor="testimonials">
    			<a href="#testimonials" data-lang="feedback">Отзывы</a>
    		</li>
    		<li data-menuanchor="contacts">
    			<a href="#contacts" data-lang="contacts">Контакты</a>
    		</li>
    		<li class="language-switcher-wrapper">
    			<button class="language-switcher ua">UA</button>
    		</li>
    	</ul>
    </nav>

    data-lang - это то что нужно переводить
    Сами данные лежат в двух файлах в папке translations
    ru.json
    {
      "about_academy": "Про Академию",
      "proposal": "Что мы предлагаем",
      "your_result": "Что ты получишь",
      "feedback": "Что говорят выпускники",
      "blog": "Блог",
      "contacts": "Контакты",
      "our_mission_main": "Наша миссия"
    }

    ua.json
    {
      "about_academy": "Про Академію",
      "proposal": "Що ми пропонуємо",
      "your_result": "Що ти отримаєш",
      "feedback": "Що кажуть випускники",
      "blog": "Блог",
      "contacts": "Контакти",
      "our_mission_main": "Наша місія"
    }

    JS
    (function($) {
    
    function Translate() { 
    	//initialization
    	this.init =  function(attribute, lng) {
    		this.attribute = attribute;
    		this.lng = lng;
    	};
    	//translate 
    	this.process = function() {
    		var _self = this;
    		var xrhFile = new XMLHttpRequest();
    		//load content data 
    		xrhFile.open("GET", "./translations/"+this.lng+".json", false);
    		xrhFile.onreadystatechange = function () {
    			if(xrhFile.readyState === 4) {
    				if(xrhFile.status === 200 || xrhFile.status == 0) {
    					var LngObject = JSON.parse(xrhFile.responseText);
    					console.log(LngObject["name1"]);
    					var allDom = document.getElementsByTagName("*");
    					for(var i =0; i < allDom.length; i++){
    						var elem = allDom[i];
    						var key = elem.getAttribute(_self.attribute);
    						if(key != null) {
    							console.log(key);
    							elem.innerHTML = LngObject[key];
    						}
    					}
    				}
    			}
    		};
    		xrhFile.send();
    	};
    }
    
    // Change language
    function loadNewLang(new_lang) {
    	var translate = new Translate();
    	var currentLng = new_lang;
    	var attributeName = 'data-lang';
    	translate.init(attributeName, currentLng);
    	translate.process();
    }
    
    loadNewLang('ua');
    
    $('.language-switcher').on('click', function(e) {
    	e.preventDefault();
    	$('.preloader').removeAttr('style');
    	if($(this).hasClass('ru')) {
    		$(this).toggleClass('ru ua').text('UA');
    		loadNewLang('ua');
    		ln_preloader();
    	} else if ($(this).hasClass('ua')) {
    		$(this).toggleClass('ua ru').text('RU');
    		loadNewLang('ru');
    		ln_preloader();
    	}
    });
    
    })(jQuery);

    работает это все из под сервера
    Ответ написан
    5 комментариев
  • Как менять местами блоки, секции WordPress?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    В acf pro есть такая штука как flexible fields, гибкое содержимое. Оно позволяет делать то что вы хотите, насколько мне известно.
    Также в последних версиях появилась возможность создавать блоки для гутенберг, и тогда в самом гутенберг вы можете эти блоки менять местами. Ну а в самих блоках стандартно используете остальные возможности acf
    Ответ написан
    Комментировать
  • Как в WordPress вывести блок "также вас возможно заинтересуют эти товары"?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    На самом деле некоторые вещи не совсем понятно как гуглить, особенно, если сталкиваешься впервые.

    За категорию отвечает шаблон taxonomy-product_cat, который в свою очередь подключает в себя шаблон archive-product. В этом шаблоне есть определенное количество хуков на которые можно подвесить вывод определенных товаров. Например на хук woocommerce_after_shop_loop с приоритетом больше 10, то есть после пагинации.
    В вукоммерсе есть три вида связанных товаров. Апселы, Кросселы и , собственно, Связанные товары. Я пишу сейчас по памяти, могу гдето ошибиться. Кросселы задаются в настройках товара и выводятся в корзине. Апселы задаются тоже в настройках товара и выводятся в карточке товара. Рекомендованные товара берутся на основе категории товара и сами по себе выводятся в карточке товара. Есть плагин, позволяющий выводить вручную.
    Собственно, вывод - все эти товары каким-либо образом связаны с конкретным товаром а не с категорией (кроме релейтед, но он все равно связан с категорией конкретного товара). Поэтому что будет если подвесить стандартные выводы на хук в категории - я не знаю.
    Выглядеть это могло бы както так:

    add_action( 'woocommerce_after_shop_loop', 'your_theme_upsell_display', 15 );
    function your_theme_upsell_display () {
    	if ( is_product_category() ) {
    		woocommerce_upsell_display();
    	}
    }
    
    add_action( 'woocommerce_after_shop_loop', 'your_theme_output_related_products', 20 );
    function your_theme_output_related_products () {
    	if ( is_product_category() ) {
    		woocommerce_output_related_products();
    	}
    }

    Тут сама идея как вывести что-либо на странице категорий.
    Ответ написан
    Комментировать
  • Как вывести поле ACF под заголовком категории?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Вот рабочий код

    function add_custom_field_subcat( $category ) {
    
    	$value = get_field('category_description', 'product_cat_'. $category->term_id);
    
    	echo $value; 
    
    }
    add_action( 'woocommerce_before_subcategory_title', 'add_custom_field_subcat', 15 );
    Ответ написан
  • Как изменить высоту API карты?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Ну вы же сами задали ей минимальную высоту в 720 пикселей. Уменьшайте ее на медиазапросах как вам нужно чтобы на мобилке было
    Ответ написан