Ответы пользователя по тегу WordPress
  • Проблема с кешем?

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

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

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Самое важно, аргументы регистрации таксономии вы решили, почему-то, в вопросе не указывать. Там есть аргумент rewrite в котором и нужно писать правила для построения ссылок

    При регистрации типа записи с помощью register_post_type() тоже есть аргумент rewrite, который тоже используется для построения ссылок

    После изменений нужно обязательно пересохранить кеш ссылок Настройки → Постоянные ссылки → Сохранить

    В целом, работа с построением ссылок в WordPress — это боль, но вы можете найти кучу готовых примеров и использовать их, а мой вам совет — делайте ссылки как можно короче, они выглядят опрятнее, а делать идеальное дерево из них не имеет смысла
    Ответ написан
    Комментировать
  • Как сделать чередование постов из разных циклов(условий/такс)?

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

    $args = [
    	'post_type' => ['post','service'],
    	'post__in' => [5,12,2,14,7],
    	'orderby' => 'post__in',
    ];
    
    $loop = new WP_Query( $args );


    При выводе проверяете тип записи и подключаете нужный шаблон

    if ( get_post_type() === 'service' ) {
    	get_template_part( 'templates/archive/archive-service' );
    } else {
    	get_template_part( 'templates/archive/archive-common' );
    }


    Если типов записей много, то можно сделать так

    $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' );
    }
    Ответ написан
    Комментировать
  • Как вставить сторонний php код в страницу админки?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вероятно этот код придется разделить: верстку форм и таблиц вставить в тело создаваемой страницы в add_menu_page(), php-обработчики и функции подключить в functions.php, а js-скрипты подключить на хуке admin_enqueue_scripts. Лучше все это вообще вынести в отдельный плагин
    Ответ написан
    Комментировать
  • Как вывести через WP_Query пользовательские посты (Custom Post Type UI) по пользовательскому же полю (ACF)?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Попробуйте так

    $args = [
    	'post_type' => 'personal',
    	'posts_per_page' => 20,
    	'meta_query' => [
    		[
    			'key' => 'otdel',
    			'value' => '"buhuchet"',
    			'compare' => 'LIKE'
    		]
    	]
    ];
    
    $loop = new WP_Query( $args );
    Ответ написан
    Комментировать
  • Как написать идеальный wp query для пользовательской таксономии?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    В get_categories() укажите 'taxonomy' => get_queried_object()->taxonomy и лучше используйте get_terms(), чтобы не путаться

    В WP_Query() укажите тип записи, который нужно получить 'post_type' => 'myposttype', а так же category_name нужно заменить на массив tax_query
    Ответ написан
    1 комментарий
  • Как загружать стили в кастомный header на wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Очень не советую отключать функцию wp_head() в header.php, вы раз за разом будете натыкаться на проблемы, у вас не будут работать нужные плагины и функции

    Для управления тегом <title> используйте хук wp_title
    Ответ написан
  • Как переделать Native-галерею wordpress?

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

    add_filter( 'post_gallery', 'my_gallery_shortcode', 10, 3 );
     
    function my_gallery_shortcode( $output = '', $atts = null, $instance = null ) {
        $return = $output; // fallback
     
        // retrieve content of your own gallery function
        $my_result = get_my_gallery_content( $atts );
     
        // boolean false = empty, see http://php.net/empty
        if( !empty( $my_result ) ) {
            $return = $my_result;
        }
     
        return $return;
    }
    Ответ написан
    Комментировать
  • Wordpress поиск не ищет текст с кавычками?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Потому что это не гугл, поиск ищет точные вхождения слов. Если вы сделаете опечатку, он тоже ничего не найдет. Можете посмотреть в сторону elastic search или плагина ElasticPress
    Ответ написан
    Комментировать
  • Как достать записи из wordpress (нестандартно)?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Если эта приставка находится в слаге поста, то, на сколько я знаю, нативным wp_query() получить то, что вы хотите нельзя и придется писать SQL запрос

    Подобные задачи я решаю так: на save_post или wp_insert_post() вешаю проверку нужного условия и добавляю мету с ключом _type

    $post_slug = get_post_field( 'post_name', get_post_ID() );
    if ( stripos( $post_slug, 'doc_class_' ) !== false ) {
    	add_post_meta( $post_id, '_type', 'doc_class', true );
    }


    Получить посты с нужным ключом значительно проще
    Ответ написан
    Комментировать
  • Что это за тема wordpress?

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

    6166569b4165d590210738.jpeg
    Ответ написан
  • Что с этими стилями wordpress не так?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Правильное подключение файла style.css
    add_action( 'wp_enqueue_scripts', 'theme_scripts' );
    function theme_scripts() {
    	wp_enqueue_style( 'theme-style', get_stylesheet_uri(), array(), filemtime( get_theme_file_path( '/style.css' ) ) );
    }


    Код нужно писать в родительской теме. Если будет подключена дочерняя тема, то функция get_stylesheet_uri() получит ссылку на стили дочерней темы, а не родительской

    Подробнее по подключение скриптов и стилей тут
    Ответ написан
  • Как сделать в Woocommerce Wordpress скидку на третий товар 100% если 2 в корзине?

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    // получаем термины записи
    $terms = get_the_terms( $post->ID, 'my_term' );
    if ( is_array( $terms ) ) {
    	foreach ( $terms as $key => $term ) {
    		// выводим мету терминов
    		echo get_term_meta( $term->term_id, 'my_term_key', true );
    	}
    }
    Ответ написан
    5 комментариев
  • Как исключить записи определенных категорий из вывода?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вот пример как исключить записи определенных категорий на архивных страницах

    add_action( 'pre_get_posts', 'exclude_category' );
    function exclude_category( $query ) {
    	if ( $query->is_archive() && $query->is_main_query() ) {
    		$query->set( 'cat', '-1,-1347' );
    	}
    }
    Ответ написан
    Комментировать
  • Как сделать личные кабинеты на Wordpress с особенностями?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Не совсем ясно, что именно вы хотите услышать в ответе. Если вы ищите плагин, то на 100% подходящего решения вам найти не удастся, вы можете посмотреть в сторону wp-recall, у него есть много дополнений, среди которых разделение на типы пользователей, но, скорее всего, вам все равно придется допиливать что-то самостоятельно

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

    У меня есть горнолыжный сайт на котором есть инструкторы по лыжам и сноуборду. По началу это тоже были юзеры, но это вызывало много сложностей:

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


    Сейчас инструктора — это кастомный тип записи, вы можете зарегистрироваться, добавить сколько хотите инструкторов, горнолыжных школ, публиковать статьи, новости и мероприятия в афише
    Ответ написан
    Комментировать
  • Как восстановить миниатюры wordpress после переноса с хостинга на другой хостинг?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вероятнее всего у вас есть записи в базе об этих медиафайлах, но физически они отсутствуют в папке /uploads, вам нужно загрузить их в эту папку

    Если у вас есть оригиналы изображений в этой папке, вы можете нарезать миниатюры заново плагином Regenerate Thumbnails
    Ответ написан
  • Как фильтровать кастомные типы постов по категориям?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Создаете простую html форму с get-запросом. Очевидно, что товары не могут быть одновременно светлыми и темными, поэтому это должны быть радио-кнопки, а не чекбоксы, как на макете

    <form method="get" class="obj-filter">
    	<input class="obj-filter-input" type="radio" id="light" name="color" value="light">
    	<label class="obj-filter-label" for="light">Light</label>
    
    	<input class="obj-filter-input" type="radio" id="dark" name="color" value="dark">
    	<label class="obj-filter-label" for="dark">Dark</label>
    
    	<input id="obj-filter-submit" type="submit" class="button" value="Фильтровать">
    </form>


    Теперь вам нужно зарегистрировать этот параметр color для того, чтобы можно было получить его из ссылки с get-параметрами

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


    При нажатии кнопки "Фильтровать" страница перезагружается, при этом создается новый запрос в базу, на хуке pre_get_posts вы можете выдернуть параметры get-запроса из ссылки и отсортировать нужные вам записи

    add_action( 'pre_get_posts', 'custom_pre_get_posts', 1 );
    	function custom_pre_get_posts( $query ) {
    	// Выходим, если это админ-панель или не основной запрос
    	if( is_admin() || !$query->is_main_query() )
    		return;
    
    	// сортируем записи 'obj', если указан гет-запрос
    	if ( $query->is_archive() && $query->get('post_type') === 'obj' ) {
    		if ( $var = get_query_var( 'color', false ) ) {
    			$query->set( 'obj-cat', $var );
    		}
    	}
    }
    Ответ написан
    Комментировать