• Как работать в carbon fields?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    1. Для кастомных типов записей лучше добавлять кастомные таксономии, этим проще управлять и меньше вероятность столкнуться со сложными ошибками

    2. Можете добавить несколько полей image

    Field::make( 'image', 'crb_image', __( 'Image' ) )

    Или одно поле media_gallery

    Field::make( 'media_gallery', 'crb_media_gallery', __( 'Media Gallery' ) )
    Ответ написан
    Комментировать
  • Как вывести поля названия и описания из таксономии carbon fields?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Название и описание таксономии не имеют отношения к carbon fields, выводятся с помощью функций the_archive_title() и the_archive_description()
    Ответ написан
    Комментировать
  • Как детали заказа order-details.php перенести в заказы orders.php?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Поменяйте ссылку сразу на ту, которую нужно или сделайте редирект
    Ответ написан
    Комментировать
  • Ошибка 500 в консоли wordpress, что делать?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    500 — это серверная ошибка, причин может быть много

    • ошибки в файле .htaccess;
    • неподходящая версия PHP;
    • некорректные права на файлы и каталоги;
    • большое количество запущенных процессов;
    • большие скрипты;
    • несовместимые или устаревшие плагины.


    Попробуйте написать в тех. поддержку хостинга, воспроизвести ошибку на сайте или посмотреть логи сервера
    Ответ написан
    Комментировать
  • Как изменить GET запрос на фильтрах?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Давайте начнем с того, что у вас должны быть зарегистрированы переменные orderby и filter_naznachenie, это нужно, чтобы правильно получить их значения

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


    Строить ссылки нужно не через добавление символов & и ? руками, а с помощью add_query_arg()

    $link = get_the_permalink()
    $link = add_query_arg( [ 'orderby' => 'price', 'filter_naznachenie' => 'svet' ], $link );
    
    echo '<a href="' . $link . '"></a>';
    Ответ написан
    Комментировать
  • Cравнить Дату События (ACF) и Дату сейчас — WP_Query?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Можете сравнивать даты как строки

    $current_date = date( 'Y-m-d' );
    $today = '2021-11-05';
    
    if ( $current_date == $today ) {
    	var_dump( 'сегодня 5 ноября' );
    } else {
    	var_dump( 'сегодня НЕ 5 ноября' );
    }


    Надежнее сравнивать через преобразование в метку времени Unix, для случаев, если даты в разных форматах

    $current_date = date( 'Y-m-d' );
    $today = '05-11-2021';
    
    if ( strtotime( $current_date ) == strtotime( $today ) ) {
    	var_dump( 'сегодня 5 ноября' );
    } else {
    	var_dump( 'сегодня НЕ 5 ноября' );
    }


    В документации ACF, при выборе постов даты сравниваются следующим образом:

    // Find todays date in Ymd format.
    $today = date('Ymd');
    
    // Query posts using a meta_query
    $args = array(
    	'post_type' => 'event',
    	'meta_query' => array(
    		array(
    			'key'     => 'event_date',
    			'compare' => '=',
    			'value'   => $today,
    		)
    	),
    );
    Ответ написан
    Комментировать
  • Как вывести детей определённого родителя, функцией wp_list_pages?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $parent_id = 6;
    $children = wp_list_pages( 'title_li=&child_of=' . $parent_id . '&echo=0' );
    if ( $children) : ?>
        <ul>
            <?php echo $children; ?>
        </ul>
    <?php endif;
    Ответ написан
    Комментировать
  • Как сделать такие иконки в вордпресс?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    При чем здесь WordPress? Это банальная верстка. Если вопрос касается вывода информации из админки, то решается с помощью плагинов ACF или Carbon Fields
    Ответ написан
    Комментировать
  • Как в WordPress найти категорию Misc в массиве?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Misc это что за сущность? Заголовок? Тогда нужно получить массив заголовков и в них искать

    $getMassivmenu = get_terms(
    	'taxonomy' => 'product_cat',
    	'fields' => 'names'
    );
    
    if ( in_array( 'Агрохимикаты', $getMassivmenu ) ) {
    	echo 'Нашёл Агрохимикаты';
    }
    if ( in_array( 'Misc', $getMassivmenu ) ) {
    	echo 'Нашёл Misc';
    } else {
    	echo 'Ничего не нашел';
    }


    Чтобы не мучаться, добавьте эту функцию в вашу тему и печатайте переменные vardump( $var )

    function vardump( $var ) {
    	if ( current_user_can( 'manage_options' ) ) {
    		echo '<pre>';
    			var_dump( $var );
    		echo '</pre>';
    	}
    }
    Ответ написан
  • Как вывести разные контактные формы на разных языках?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $locale = get_locale();
    
    if ( $locale == 'ru_RU' ) {
    	echo do_shortcode( '[contact-form-7 id="158" title="Контактная форма"]' );
    } else {
    	echo do_shortcode( '[contact-form-7 id="485" title="Контактна форма"]' );
    }
    Ответ написан
    Комментировать
  • Стоит ли предпочесть Тильду Wordpress для корпоративного сайта?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Мне кажется, что вы начинаете с середины. По хорошему нужно собрать семантическое ядро, кластеризовать, собрать карту сайта, написать заголовки h1, title, description, заказать тексты страниц у копирайтера, проанализировать сайты конкурентов и заказать макеты у веб-дизайнера

    У уже после того, как макеты будут готовы, скорее всего, окажется, что часть функционала вы не сможете реализовать на Тильде и тогда, да, выход — делать на WordPress

    Если же цель сделать быстро и дешево на коленке за вечер, то Тильда вам подойдет

    PS. Если соберетесь делать на Elementor, то сайт быстрым не будет
    Ответ написан
  • Как через ACF выводить содержимое полей для нескольких страниц сразу?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    В функции get_field() есть второй параметр $post_id, в котором можно указать id записи из меты которой нужно брать данные

    get_field( $selector, [$post_id], [$format_value] );


    Либо создавать поле в options сайта и брать оттуда
    Ответ написан
  • Как правильно поправить запрос в wp?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $query = new WP_Query( [
    	'orderby' => 'date',
    	'posts_per_page' => 6,
    	'category__and' => array( 76967, 2 ),
    ] );


    Или можете собрать tax_query, так выглядит понятнее

    $query = new WP_Query( [
    	'orderby' => 'date',
    	'posts_per_page' => 6,
    	'tax_query' => [
    		'relation' => 'AND',
    		[
    			'taxonomy' => 'category',
    			'field'    => 'id',
    			'terms'    => array( 76967, 2 ),
    			'operator' => 'AND',
    		]
    	]
    ] );
    Ответ написан
  • Как вывести все посты определенной таксономии в вордпресс?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Используйте в запросе тип записи 'post_type' => 'post'
    Ответ написан
    Комментировать
  • Как массово изменить год в Н1 для сайта на WP?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Проще всего заменить регуляркой при выводе во фронт

    add_filter( 'the_title', 'f711_title_filter' );
    function f711_title_filter( $title ) {
    	return str_replace( '2020', '2021', $title );
    }


    Чтобы заменить данные в базе, вы можете получить нужные записи с помощью get_posts() и в цикле обновить с помощью wp_update_post()
    Ответ написан
    Комментировать
  • Где найти нормальную документацию или гайд по carbon fields?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    У carbon fields супер понятная документация

    To change the location of your Theme Options page, you use set_page_parent($parent), where $parent is either:
    • Title of a top level Theme Options page.
    • Indentificator of a top level menu section in the admin menu sidebar. This corresponds to the $parent_slug parameter of add_submenu_page(). You can see all predefined page parents here.


    Русскоязычные символы в коде это вообще моветон, если эти кто-то пишут говнокод, то не обязательно на них равняться. Все русскоязычные строки в коде правильно писать через функции __(), _e(), esc_html__() и esc_html_e() на английском и переводить тему с помощью loco translate или poedit
    Ответ написан
    Комментировать
  • Как вставить помимо jpg webp в picture?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    <picture>
    	<source srcset="/images/example.webp" type="image/webp">
    	<source srcset="/images/example.jpg" type="image/jpeg">
    	<img src="/images/example.jpg" alt="example alt" width="1200" height="800" loading="lazy">
    </picture>
    Ответ написан
    Комментировать
  • Как в Advanced custom fields организовать разный поиск по разным полям?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Комментировать
  • Как вывести записи из определенной рубрики в wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Рубрики в WordPress открываются с префиксом site.ru/category/news. Это поведение лучше не менять, чтобы избежать некоторых проблем и конфликтов. Для страницы категории достаточно использовать стандартный шаблон archive.php или частный category.php

    <?php
    /**
     * The template for displaying archive pages
     *
     * Used to display archive-type pages if nothing more specific matches a query.
     * For example, puts together date-based pages if no date.php file exists.
     *
     * If you'd like to further customize these archive views, you may create a
     * new template file for each one. For example, tag.php (Tag archives),
     * category.php (Category archives), author.php (Author archives), etc.
     *
     * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
     *
     * @package WordPress
     * @subpackage Twenty_Sixteen
     * @since Twenty Sixteen 1.0
     */
    
    get_header(); ?>
    
    	<div id="primary" class="content-area">
    		<main id="main" class="site-main" role="main">
    
    		<?php if ( have_posts() ) : ?>
    
    			<header class="page-header">
    				<?php
    					the_archive_title( '<h1 class="page-title">', '</h1>' );
    					the_archive_description( '<div class="taxonomy-description">', '</div>' );
    				?>
    			</header><!-- .page-header -->
    
    			<?php
    			// Start the loop.
    			while ( have_posts() ) :
    				the_post();
    
    				/*
    				 * Include the Post-Format-specific template for the content.
    				 * If you want to override this in a child theme, then include a file
    				 * called content-___.php (where ___ is the Post Format name) and that
    				 * will be used instead.
    				 */
    				get_template_part( 'template-parts/content', get_post_format() );
    
    				// End the loop.
    			endwhile;
    
    			// Previous/next page navigation.
    			the_posts_pagination(
    				array(
    					'prev_text'          => __( 'Previous page', 'twentysixteen' ),
    					'next_text'          => __( 'Next page', 'twentysixteen' ),
    					'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
    				)
    			);
    
    			// If no content, include the "No posts found" template.
    		else :
    			get_template_part( 'template-parts/content', 'none' );
    
    		endif;
    		?>
    
    		</main><!-- .site-main -->
    	</div><!-- .content-area -->
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>
    Ответ написан
  • Форма подбора wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    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 );
    
    	}
    }
    Ответ написан
    Комментировать