• Форма подбора wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    1. Регистрируете гет-переменные

    add_filter( 'query_vars', 'add_query_vars' );
    function add_query_vars( $qvars ) {
    
    	$qvars[] = 'brand';
    	$qvars[] = 'model';
    	$qvars[] = 'price';
    	$qvars[] = 'location';
    
    	return $qvars;
    }


    2. Собираете и выводите html-форму
    <form method="get" class="block obj-filter">
    	<div class="row d-flex align-items-center">
    		<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
    			<select name="brand" id="brand" class="obj-select">
    				<option value="audi">Audi</option>
    				<option value="volkswagen">Volkswagen</option>
    				<option value="mercedes">Mercedes</option>
    				<option value="bmw">BMW</option>
    			</select>
    		</div>
    		<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
    			<select name="price" id="price" class="obj-select">
    				<option value="20">$20 000</option>
    				<option value="50">$50 000</option>
    				<option value="75">$75 000</option>
    				<option value="100">$100 000</option>
    			</select>
    		</div>
    		<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
    			<input type="text" name="location" id="location" class="obj-filter-input" value="">
    		</div>
    		<div class="col-12 col-md-6 col-lg-3 col-margin-bottom-small col-lg-margin-bottom-none">
    			<input id="obj-filter-submit" type="submit" class="button" value="Фильтровать">
    		</div>
    	</div>
    </form>


    3. При нажатии кнопки Фильтровать страница перезагружается, вы получаете ссылку вида https://example.loc/?brand=audi&price=50. На хуке pre_get_postsможно поправить основной запрос вытянув данные из гет-параметров. Вам нужно установить новые tax_query или meta_query в зависимости от логики сайта

    add_action( 'pre_get_posts', 'custom_pre_get_posts', 1 );
    function custom_pre_get_posts( $query ) {
    	// Выходим, если это админ-панель или не основной запрос
    	if( is_admin() || ! $query->is_main_query() )
    		return;
    
    	// предположим, что это таксономия с машинами
    	if ( $query->is_tax( 'cars' ) ) {
    		
    		$meta = array();
    		$meta['meta_query']['relation'] = 'AND';
    
    		// выбираем записи с GET запросами
    		$query_vars = ['brand', 'model', 'price', 'location'];
    		foreach ( $query_vars as $key => $query_var ) {
    			if ( $var = get_query_var( $query_var, false ) ) {
    				// тут пишем логику по которой собирается переменная meta_query и/или tax_query
    			}
    		}
    		$query->set( 'meta_query', $meta );
    
    	}
    }
    Ответ написан
    Комментировать
  • Как изменить html структуру wp_list_pages?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Создайте свой запрос wp_query() и выводите так, как вам нужно

    // задаем нужные нам критерии выборки данных из БД
    $args = array(
    	'post_type' => 'page',
    	'post_parent' => $pageN
    );
    
    $query = new WP_Query( $args );
    
    // Цикл
    if ( $query->have_posts() ) {
    	echo '<ul>';
    	while ( $query->have_posts() ) {
    		$query->the_post();
    		echo '<li>' . get_the_title() . '</li>';
    	}
    	echo '</ul>';
    } else {
    	// Постов не найдено
    }
    // Возвращаем оригинальные данные поста. Сбрасываем $post.
    wp_reset_postdata();
    Ответ написан
    4 комментария
  • Как выводить посты?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Все правки глобального запроса записей нужно делать на хуке pre_get_posts

    add_action( 'pre_get_posts', 'custom_pre_get_posts', 1 );
    function custom_pre_get_posts( $query ) {
    
    	// Выходим, если это админ-панель или не основной запрос
    	if( is_admin() || !$query->is_main_query() )
    		return;
    
    	// устанавливаем по 12 постов на страницах пагинации с главной
    	if ( $query->is_main_query() && $query->is_home() && $query->is_paged() ) {
    		$query->set( 'posts_per_page', 12 );
    	}
    
    }
    Ответ написан
  • Как в Contact form 7 вставить input со значением, взятым из PHP?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Можете сделать шорткод

    add_shortcode( 'cid', 'cid_shortcode' );
    function cid_shortcode( $atts ) {
    
    	$cid = '';
    
    	if ( isset( $_COOKIE['_ga'] ) ) {
    		$ga = explode( '.', $_COOKIE['_ga'] );
    		$cid = $ga[2] . '.' . $ga[3];
    	}
    
    	return $cid;
    
    }
    Ответ написан
    5 комментариев
  • Можно ли для отрисовки меток(placemark) yandex map указывать адрес а не координаты?

    artzolin
    @artzolin
    php, WordPress разработка сайтов zolin.digital
    Вы можете использовать api геокодера. Не больше 1 тысячи запросов в сутки бесплатно. Тут примеры запросов, тут примеры ответов, можете получать в формате json или xml
    Ответ написан
    Комментировать
  • Есть ли плагины для создания реферальных ссылок?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Вариантов достаточно много. В целом это и руками делается достаточно просто

    1. Регистрируете get переменную ref

    add_filter( 'query_vars', 'add_query_vars' );
    function add_query_vars( $qvars ) {
    
    	$qvars[] = 'ref';
    	return $qvars;
    
    }


    2. В ЛК создаете поле, которое можно скопировать. В гет-параметр пишите id пользователя
    https://example.ru/?ref=48

    3. На init проверяете значение гет-параметра, если пользователь не авторизован или его id отличается от гет-запроса, то пишите id реферрала setcookie()

    function set_new_cookie() {
    	if ( $ref = get_query_var( 'ref', false ) ) {
    		//setting your cookies there
    	}
    }
    add_action( 'init', 'set_new_cookie' );


    4. На хуке user_register проверяете, существует ли указанные cookie и пишите его в мету для дальнейшей обработки

    add_action( 'user_register', 'referral_registration_save', 10, 1 );
    function referral_registration_save( $user_id ) {
    
    	if ( isset( $_COOKIE['ref'] ) )
    		add_user_meta( $user_id, 'ref', $_COOKIE['ref'], true );
    	
    }
    Ответ написан
    Комментировать
  • 3-й персональный шаблон для single.php?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Переменная $post у вас уже определена, второй раз ее определять не обязательно, для подключения шаблонов есть функция get_template_part()

    if ( in_category( 'news' ) ) {
    	get_template_part( 'templates/single', 'news' );
    } elseif( in_category( 'articles' ) ) {
    	get_template_part( 'templates/single', 'articles' );
    } else {
    	get_template_part( 'templates/single', 'default' );
    }
    Ответ написан
    Комментировать
  • Wordpress при запросе изображения выдает массив. Как его использовать?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    $image = get_field('image');
    if( !empty( $image ) ) {
    	echo '<img src="' . esc_url( $image['url'] ) . '" alt="' . esc_attr( $image['alt'] ) . '">';
    }
    Ответ написан
    Комментировать
  • Как исправить здесь двойную анимацию, (MixItUp)?

    artzolin
    @artzolin
    php, WordPress разработка сайтов zolin.digital
    Подключите оригинальную либу и сделайте по документации, не надо ничего переделывать
    Ответ написан
    Комментировать
  • Изучение/Как создать рамку в Wordpress? Какие CMS системы посоветуете?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Ответ написан
    Комментировать
  • Как подключить скрипт через functions.php на wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Вы можете сделать зависимость от основного скрипта с помощью wp_add_inline_script()

    add_action('wp_enqueue_scripts', function() {
    
    	wp_enqueue_script( 'my_scripts', get_stylesheet_directory_uri() .'/my_scripts.js' );
    	wp_add_inline_script( 'my_scripts', '$(\'.selectpicker\').selectpicker();' );
    	
    });
    
    /* Получим в HTML коде
    <script type='text/javascript' src='http://example.com/wp-content/themes/mytheme/my_scripts.js'></script>
    <script type='text/javascript'>
    $('.selectpicker').selectpicker();
    </script>
    */
    Ответ написан
    1 комментарий
  • Как сделать aspect-ratio: 16 / 9 с помощью padding?

    artzolin
    @artzolin
    php, WordPress разработка сайтов zolin.digital
    .aspect-ratio {
    	position: relative;
    	width: 100%;
    	height: 0;
    	padding-top: 56.25%; /* 16:9 Aspect Ratio */
    	overflow: hidden;
    }
    
    .aspect-ratio iframe {
    	position: absolute;
    	top: 0;
    	left: 0;
    	width: 100%;
    	height: 100%;
    	border-width: 0;
    	outline-width: 0;
    }
    Ответ написан
    Комментировать
  • Почему не работает вывод похожих постов по рубрике?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Потому что у вас таксономия, а не категория

    $categories = get_the_terms( $post->ID, 'voprosy-types' );
    
    $category_ids = array();
    foreach( $categories as $individual_category ) {
    	$category_ids[] = $individual_category->term_id;
    }
    
    $args = array(
    	'post__not_in' => array( $post->ID ),
    	'posts_per_page' => '5',
    	'orderby' => 'rand',
    	'tax_query' => [
    		[
    			'taxonomy' => 'voprosy-types',
    			'field' => 'id',
    			'terms' => $category_ids,
    		]
    	]
    );
    Ответ написан
    1 комментарий
  • Как вывести разные формы на разных языках?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    $locale = get_locale();
    
    if( $locale == 'uk' ) {
    	echo do_shortcode( '[contact-form-7 id="420" title="Оформити заявку"]' );
    } elseif( $locale == 'ru_RU' ) {
    	echo do_shortcode( '[contact-form-7 id="419" title="Оформить заявку"]' );
    } else {
    	echo do_shortcode( '[contact-form-7 id="421" title="Make a request"]' );
    }
    Ответ написан
    Комментировать
  • Как выводить нужный мне шаблон в wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Специально связывать никак не нужно, WordPress сам ищет и берет наиболее подходящий шаблон. Если вы зарегистрировали авторов как таксономии, то создавать в админке надо таксономии, а не страницы или записи, тогда искомый шаблон будет работать
    Ответ написан
  • Проблема с кешем?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Выводите через js, он тоже умеет работать с разными форматами date. Если не подходит, то вариантов мало — сбрасывать кеш раз в сутки или писать дополнительный ajax запрос
    Ответ написан
  • Как получить названия страниц в зависимости от языка?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    $locale = get_locale();
    
    if ( $locale == 'ru_RU' ) {
    	# ru code...
    } else {
    	# other code...
    }
    Ответ написан
    Комментировать
  • Почему не работает шаблон для рубрики и отдельного поста?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Я рекомендую для типа записи enterprises зарегистрировать пользовательскую таксономию register_taxonomy(), лучше для каждого типа записи иметь свои таксономии, так вы избежите множества проблем в дальнейшем

    Архивный шаблон типа записи (который появляется из аргумента 'has_archive' => true) будет доступен в archive-{post_type}.php, а таксономия taxonomy-{taxonomy}.php

    Мне всегда было удобнее проверять тип записи в archive.php и подключать нужный шаблон

    $post_type = get_post_type();
    
    if ( file_exists( get_theme_file_path( 'templates/archive/archive-' . $post_type . '.php' ) ) ) {
    	get_template_part( 'templates/archive/archive-' . $post_type );
    } else {
    	get_template_part( 'templates/archive/archive-common' );
    }
    Ответ написан
    Комментировать
  • Страницу html не видно полностью на экране, как исправить?

    artzolin
    @artzolin
    php, WordPress разработка сайтов zolin.digital
    Хотите учиться верстать — учитесь делать это без копирования стилей элементов из фотошопа, это очень низкое качество верстки, 95% нужно переделывать

    Из всего этого я бы оставил только background-color и width: 100%, остальное на выброс
    Ответ написан
    Комментировать
  • Не работает код HTML И CSS,что делать?

    artzolin
    @artzolin
    php, WordPress разработка сайтов zolin.digital
    Так семантически правильнее:

    <header id="header" role="banner">Шапка</header>
    <main id="main" role="main">Главное</main>
    <aside id="aside" role="complementary">Боковая</aside>
    <footer id="footer" role="contentinfo">Футер</footer>
    Ответ написан
    4 комментария