Задать вопрос
Ответы пользователя по тегу WordPress
  • Как сделать так, чтобы при adblock показывалась кнопка Войти на сайте?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вероятно adblock вырезает все, что имеет классы типа .banner, .add, .ads и т.д.
    Ответ написан
    Комментировать
  • Как вывести нужные термины таксономии записи?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    get_the_terms() получает термины, относящиеся к текущей записи. Если у вас отмечены "Бесплатно" и "Государственное", то функция вернет и их. В этой функции нет аргументов, позволяющих исключить термины из выборки на момент запроса в базу

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

    $cur_terms = get_the_terms( $postID->ID, 'wpsl_store_category' );
    $not_allowed = [ 'Бесплатно', 'Государственное' ];
    
    if( is_array( $cur_terms ) ) {
    	foreach( $cur_terms as $cur_term ) {
    		if ( !in_array( $cur_term->name, $not_allowed ) ) {
    			echo $cur_term->name;
    		}
    	}
    }
    Ответ написан
    4 комментария
  • Как разрешить авторам загружать файлы из фронтэнда в WP?

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

    add_action( 'admin_init', 'razreshit_uchasnikam_gruzit_faili' );
    function razreshit_uchasnikam_gruzit_faili() {
    	if ( !current_user_can( 'upload_files' ) ) :
    		$uchasnik = get_role( 'author' );
    		$uchasnik->add_cap( 'upload_files' );
    	endif;
    }
    Ответ написан
  • Как активировать ссылки для пагинации?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Зависит от того, где вы находитесь. Если это любая архивная страница (archive.php, category.php, home.php и т.д), то тут уже существует глобальный запрос и вызывать кастомный экземпляр wp_query() НЕ НУЖНО. Если нужно изменить запрос, то делать это нужно на хуке pre_get_posts

    Для этого, существующего запроса будут работать родные функции для пагинации the_posts_pagination() и the_posts_navigation(), я советую посмотреть любую популярную или стандартную тему twenty в качестве примера

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

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

    $i = 1;
    while( $loop->have_posts() ) {
    	$loop->the_post();
    
    	if ( $i == 1 ) {
    		# первый пост
    	} else {
    		# все остальные
    	}
    
    	$i++;
    }
    Ответ написан
    Комментировать
  • Как разделить на категории в вордпресс?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    В чем сложность? Добавляете две рубрики, при публикации записи указываете к какой рубрике она относится. Внешний вид → Меню, чтобы добавить их в меню
    Ответ написан
  • Насколько критичен размер файла стилей (style.css и других)?

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

    Кстати, мне даже интересно, что вы там понаписали на 350 кбайт, это ведь реально очень много, наверное 10к+ строк
    Ответ написан
  • Какие есть плагины для создания доски объявлений на WordPress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Чаще всего спрашивают про маркетплейсы, т.е. чтобы пользователи могли публиковать свои товары на продажу в каком-то виде. Тут на слуху два плагина:
    1. Dokan
    2. WP-Recall

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    <?php get_template_part( 'form-contacts' ); ?>
    Ответ написан
    2 комментария
  • Google PageSpeed показывает разные показания. чему верить?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Там же написано: "Значения приблизительные и могут изменяться". Через 28 дней (может больше) в разделе Origin Summary должна появиться такая табличка, это средние значения, на них стоит ориентироваться

    6123247c365f5881406836.png
    Ответ написан
    Комментировать
  • Largest Contentful Paint норма ли прыганье результатов?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Да, норма. Там написано: "Значения приблизительные и могут изменяться". Через 28 дней (может больше) в разделе Origin Summary должна появиться такая табличка, это средние значения, на них стоит ориентироваться

    612322dc16391860532625.png
    Ответ написан
    Комментировать
  • Почему в Wordpress не отображаются изображения к записям?

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

    • Вы не добавили изображения
    • Что-то с ACF
    • В массиве ['sizes'] нет значения 'medium'
    • Для .product_image не заданы стили, поэтому высота изображения 0


    Нужно дебажить: сначала удостовериться, что в url() выводится нужная ссылка на изображение, потом смотреть высоту элемента в css
    Ответ написан
    2 комментария
  • Как правильно подключить отдельно скрипты и стили на разных страницах WordPress?

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

    if ( get_post_type() === 'post' ) {
    	# code...
    }


    Что касается вашей задачи, то понадобится составное условие. Вам нужно убедиться, что вы находитесь в одной из двух категорий или сингл post имеет одну из двух категорий:

    if ( is_category( [ 'news', 'projects' ] ) || ( is_singular( 'post' ) && has_category( [ 'news', 'projects' ] ) ) ) { 
    	# code...
    }
    Ответ написан
    1 комментарий
  • Как в WP сделать кастомную страницу через исходные файлы?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Нужно в корне темы создать шаблон вида template-about-page.php. В самом шаблоне нужно указать его название и перечислить типы записей для которых он будет применяться

    /*
    Template Name: Шаблон о компании
    Template Post Type: post, page
    */
    Ответ написан
    Комментировать
  • Как вывести пагинацию на странице рубрик?

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

    Рекомендую вам посмотреть archive.php популярных или стандартных тем twenty, там вы не найдете кастомных запросов WP_Query()

    С глобальным запросом прекрасно работают функции ядра the_posts_pagination() или the_posts_navigation()

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

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

    add_action( 'pre_get_posts', 'set_products_current_user', 1 );
    function set_products_current_user( $query ) {
    	// Выходим, если это админ-панель или не основной запрос
    	if( is_admin() || ! $query->is_main_query() )
    		return;
    
    	// Устанавливаем текущего юзера, если это запрос товаров
    	if ( $query->get( 'post_type' ) == 'product' ) {
    		$query->set( 'author', get_current_user_id() );
    	}
    
    }
    Ответ написан
  • Как называется хук в seo yast, который получает мета из админки или который добавляет мета на страницу?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Немного лирики: я довольно долго бодаюсь с yoast и, к сожалению, дока и качество исходников оставляют желать лучшего, к тому же они могут их переписывать — сегодня у вас данные в одной таблице лежат, а завтра уже в другой. К тому же, у них просто невероятное количество кода, как для плагина который просто выводит десяток мета-тегов. Надеюсь в обозримом будущем SEO добавят в ядро и я смогу отказаться от этого недоразумения)

    Ближе к делу: перебирая разные варианты работы с yoast я в конце концов остановился на том, что при установке меняю все поля "SEO-заголовок" и "Мета-описание" в разделе "Отображение в поисковой выдаче" на %%InsteadTitle%% и %%InsteadDescription%%

    После чего подключаю свой файл в тему, где создаю эти переменные и собираю их так, как мне нужно — чаще всего заголовки и описания берутся из excel или лежат в пост-мете (даты проведения мероприятия, характеристики товара). Болванка выглядит так:

    // Заголовки
    function get_seo_instead_title() {
    
    	$string = '';
    
    	if ( is_archive() ) {
    		// берем сео-заголовки из excel-таблицы
    	}
    
    	if ( is_single() ) {
    		// собираем сео-заголовки из get_the_title() и get_post_meta()
    	}
    
    
    	if ( $string == '' ) {
    		if ( is_home() || is_front_page() ) {
    			$string = get_bloginfo( 'name' ) . ' — ' . get_bloginfo( 'description' );
    		} elseif ( is_post_type_archive() ) {
    			$string = get_queried_object()->label;
    		} elseif ( is_archive() ) {
    			$string = get_queried_object()->name;
    		} else {
    			$string = get_the_title();
    		}
    	}
    
    	return $string;
    
    }
    
    
    // Описания
    function get_seo_instead_description() {
    
    	$string = '';
    
    	if ( is_single() ) $string = get_the_excerpt();
    
    	if ( $string == '' ) {
    		$string = 'Какое-то дефолтное описание для всех страниц, если его нет';
    	}
    
    	return $string;
    
    }
    
    // Регистрируем переменные
    function register_custom_yoast_variables() {
    	wpseo_register_var_replacement( '%%InsteadTitle%%', 'get_seo_instead_title', 'advanced', 'Some instead title text' );
    	wpseo_register_var_replacement( '%%InsteadDescription%%', 'get_seo_instead_description', 'advanced', 'Some instead title text' );
    }
    
    // Add action
    add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');
    Ответ написан
    Комментировать
  • Как добавить класс к ARTICLE, если он для отрывка (excerpt) Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    В WordPress отрывки ничем не обернуты, это делает ваша тема. Функция the_excerpt() выводит отрывок, get_the_excerpt() получает для обработки. Плюс там есть несколько фильтров

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

    Если в теге <article> есть функция post_class(), то можно добавить класс через фильтр

    // добавляем классы для мероприятий
    add_filter( 'post_class', 'add_post_classes' );
    function add_post_classes( $classes ) {
    
    	if ( get_post_type() === 'event' ) {
    		$classes[] = 'article-event';
    	}
    
    	return array_unique( $classes );
    }
    Ответ написан
  • Рассылка писем о новой записи Wordpress, какие есть бесплатные варианты?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вы можете написать небольшой код, который при помощи функции mail() или wp_mail() будет отправлять сообщения. Но письма могут попадать в спам, нужно настраивать SMTP
    Ответ написан
    Комментировать
  • Можно ли создать произвольные типы записей с подзаголовками?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Напишу свое личное мнение, т.к. с прайсами и табличными данными я работал неоднократно: ничего удобнее Excel пока что не придумали. Не важно, используете ли вы update_post_meta() или плагины типо ACF, большие таблицы в WordPress редактировать не удобно

    Я советую посмотреть в сторону google sheets api или обработчика обычного excel. Раньше я пользовался старой библиотекой PHPExcel, но она тяжелая, а когда стала сыпать ошибки, то я нашел более простой и легкий вариант SimpleXLSX. Единственные минус последней - она не умеет писать в excel, но мне и не надо
    Ответ написан
    Комментировать