• Как перенаправлять на определенную страницу по имени пользователя?

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

    function login_redirect( $redirect_to, $request, $user ){
    	if ( !is_wp_error( $user ) ) {
    		return get_author_posts_url( $user->ID, $user->user_login );
    	} else {
    		return $redirect_to;
    	}
    }
    add_filter( 'login_redirect', 'login_redirect', 10, 3 );
    Ответ написан
    Комментировать
  • Как отобразить одинаковый контент сраницы на поддомене мультисайта?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    if ( is_multisite() ) {
    	// переключаемся на блог 1
    	switch_to_blog( 1 );
    
    	echo get_post_field( 'post_content', 123 );
    
    	// возвращемся к текущему блогу
    	restore_current_blog();
    } else {
    	// не мультисайт
    }
    Ответ написан
  • В каких случаях нужно регистрировать стили(WordPress)?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Регистрация нужна для корректной работы скриптов и стилей, которые подключаются с зависимостями. Например, скрипт jquery уже зарегистрирован в WordPress, но по умолчанию он не выводится. Если какой-то плагин или вы в функцию wp_enqueue_script() третьим параметром передадите зависимость от скрипта jquery, то сначала подключится он, после него ваш скрипт

    Это обеспечивает правильную последовательность вывода скриптов, а так же гарантирует, что одни и те же скрипты не будут выводиться по нескольку раз
    Ответ написан
    2 комментария
  • Как задать условие на первую страницу пагинации wordpress?

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

    add_action( 'pre_get_posts', 'limit_posts_per_category', 1 );
    function limit_posts_per_category( $query ) {
    
    	if ( $query->is_category() && $query->is_paged() ) {
    		$query->set( 'posts_per_page', 6 );
    	}
    
    }
    Ответ написан
    Комментировать
  • Как отправить ajax запрос, учитывая что сайт на wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Воспользуйтесь документацией по ajax-запросам
    Ответ написан
    Комментировать
  • Как добавить доп. поля с плагина ACF на страницу списка записей?

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

    Для поиска шаблонов вам пригодится информация об их иерархии, скорее всего список постов в вашей теме выводится в шаблоне archive.php
    Ответ написан
    Комментировать
  • Нужно ли отключать JQuery в WordPress, если Jquery подключен локально в общем js файле?

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

    622b93259567b276856708.png
    Ответ написан
    Комментировать
  • Почему не работает кастомное условие для пагинации в worpress?

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

    add_action( 'pre_get_posts', 'limit_posts_per_home_page', 1 );
    function limit_posts_per_home_page( $query ) {
    
    	if ( $query->is_category( 6 ) && !$query->is_paged() ) {
    		$query->set( 'posts_per_page', 6 );
    	}
    
    }
    Ответ написан
    Комментировать
  • Проблема с стили css а также img на шаблоне Вордпресс?

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

    add_action( 'wp_enqueue_scripts', 'wpz_scripts' );
    function wpz_scripts() {
    
    	// Bootstrap стили
    	wp_enqueue_style( 'bootstrap-styles', get_theme_file_uri( 'css/bootstrap.min.css' ) , array(), filemtime( get_theme_file_path( '/css/bootstrap.min.css' ) ) );
    
    	// Основные стили
    	wp_enqueue_style( 'common-styles', get_theme_file_uri( 'css/style.min.css' ) , array( 'bootstrap-styles' ), filemtime( get_theme_file_path( '/css/style.min.css' ) ) );
    
    }


    Пути до файлов в теме можно получить с помощью функции get_template_directory_uri()

    <a href="#"><img src="<?php echo get_template_directory_uri(); ?>/img/facebook.png" alt=""></a>
    <a href="#" class="p-2"><img src="<?php echo get_template_directory_uri(); ?>/img/instagram.png" alt=""></a>
    Ответ написан
    Комментировать
  • Есть ли примеры фильтра по мета полям пользователей в Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Думаю вам стоит открыть документацию по функции get_users() и посмотреть какие аргументы она принимает

    Особое внимание стоит обратить на параметры:

    • 'meta_key'
    • 'meta_value'
    • 'meta_compare'
    • 'meta_query'


    Если вам нужно получить только количество пользователей, рекомендую использовать аргумент fields = ID, так вы получить только ID пользователей, а не все данные юзеров, которые для дальнейшей работы вам не нужны
    Ответ написан
    Комментировать
  • Как правильно реализовать фильтр произвольных типов записей на WP?

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

    Получить элементы таксономий можно с помощью запроса get_terms()

    $terms = get_terms( [
    	'taxonomy' => 'genres',
    	'hide_empty' => false,
    ] );
    
    if ( $terms ) {
    	echo '<ul class="genres-list">';
    	foreach ( $terms as $key => $term ) {
    		echo '<li><a href="' . get_term_link( $term->term_id, $term->taxonomy ) . '">' . $term->name . '</a></li>';
    	}
    	echo '</ul>';
    }


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

    if ( is_post_type_archive( 'book' ) ) {
    	// ...
    }
    Ответ написан
    Комментировать
  • Как в вордпресс получить даты публикаций постов по годам?

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

    $year = 2008;
    $current_year = date( 'Y' );
    
    echo '<ul>';
    
    while ( $year <= $current_year ) {
    	echo '<li><a href="' . get_year_link( $year ) . '">' . $year . '</a></li>';
    	$year++;
    }
    
    echo '</ul>';


    Если все-таки нужно проверять существование постов, то можете запрашивать один, из каждого года таким образом:

    $year = 2008;
    $current_year = date( 'Y' );
    
    echo '<ul>';
    
    while ( $year <= $current_year ) {
    
    	$args = array(
    		'year'        => $year,
    		'post_status' => 'publish, future, draft, pending',
    		'posts_per_page' => 1,
    		'fields' => 'ids'
    	);
    
    	$posts = get_posts( $args );
    
    	if ( is_array( $posts ) && !empty( $posts ) ) {
    		echo '<li><a href="' . get_year_link( $year ) . '">' . $year . '</a></li>';
    	}
    
    	$year++;
    }
    echo '</ul>';


    Если вы заранее не знаете в котором году был опубликован первый пост, его можно получить с помощью сортировки ASC

    $args = array(
    	'posts_per_page' => 1,
    	'order' => 'ASC'
    );
    
    $posts = get_posts( $args );
    
    if ( $posts ) {
    	$year = date( 'Y', strtotime( $posts[0]->post_date ) );
    }


    PS. Если у вас не посты, а другой тип записи, нужно указывать аргумент post_type
    Ответ написан
    Комментировать
  • Как приостановить работу плагина после 2 уровня вложенности?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Можно исключить все, что содержит подстроку wp-
    Можно исключить все, что содержит более 2 слешей

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

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

    $ani = '25';
    echo '<span class="advantage__text-green">' . $ani . '&nbsp;' . pll__( 'ani' ) . '</span>' . pll__( 'experiență pe piață' );


    Нужно продумать множественную/единственную форму числа (1 год, 2 года, 25 лет). На сколько я знаю в pll таких функций нет и лучше делать перевод с помощью нативных _n() и _x(), производной _nx(), а так же базовых __() и esc_html__()

    По правилам хорошего тона оригинальный текст нужно писать на английском и с него делать переводы на нужные вам языки
    Ответ написан
    Комментировать
  • Не работает the_field acf?

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

    В этом параметре так же можно передавать значение option или options, если поля создавались для общей страницы настроек

    И научитесь печатать переменные, так вы будете понимать какие значения у вас находятся в базе

    var_dump( get_field( 'header-descr-strong' ) );
    Ответ написан
    Комментировать
  • Как создать/обновить кастомное поле (игнорируя настройки плагина этого поля) wordpress?

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

    $array = [
    	'group_price' => '3.6',
    	'group_price_type' => 'fix',
    ];
    echo serialize( $array );


    Для работы с подобными данными вам еще пригодятся функции json_decode() и json_encode()
    Ответ написан
    Комментировать
  • Как правильно вставлять код в классический редактор wordpress?

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

    Пишите полный путь до изображения, строку с шорткодом без функции do_shortcode()
    Ответ написан
    Комментировать
  • Как в Wordpress запретить подписчикам смотреть свой профиль пользователя, но разрешить просматривать профиль авторов?

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

    global $authordata;
    
    // проверяем, что находимся в своем личном кабинете и имеем роль subscriber
    if ( is_author() && is_user_logged_in() && is_object( $authordata ) && in_array( 'subscriber', $authordata->roles ) && $authordata->data->ID == get_current_user_id() ) {
    
    }
    Ответ написан
    Комментировать
  • Есть похожая тема WP?

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

    622a486a2ddf2901001089.jpeg
    Ответ написан
    Комментировать
  • Какие элементы можно или даже нужно не натягивать на wp?

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