Задать вопрос
Ответы пользователя по тегу WordPress
  • Как перевести строки, где в самом предложении 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
    Если у вас на месте какого-то пункта меню будет пустое пространство или ещё что, то у вас плохой верстальщик. Те элементы, которые должны меняться из админки должны согласовываться с заказчиком, а не с ребятами с форума
    Ответ написан
  • Как реализовать сложный букинг?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Проще всего сделать простой счетчик на js передавать в data-атрибут кнопки формы, которая отвечает за дальнейшую обработку. Тащить WooCommerce для такой задачи достаточно дико
    Ответ написан
    Комментировать
  • Как вывести контент записи по клику на её заголовок?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вам нельзя использовать query_posts(), это глобальный запрос, который используется ядром WP, вы его сломаете. Для запросов используйте wp_query()

    echo перед the_field() не используется

    По существу, вы можете вывести контент сразу, большого смысла слать ajax-запросы нет

    <div class="swiper-slide swiper-slidet">
    	<span class="tab-time">
    		<?php the_field('date'); ?>
    	</span>
    	<div class="tab-content">
    		<?php the_content(); ?>
    	</div>
    </div>


    Клик по датам, это обычные табы, в интернетах огромное количество гайдов, как их реализовать. Примеры на codepen
    Ответ написан
  • Как реализовать добавление/удаление элементов через админку (может как-то в acf)?

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

    Тем не менее в ACF PRO есть repeater, с помощью которого можно реализовать добавление/удаление повторяющихся элементов
    Ответ написан
  • Как менять надпись на кнопе или просто надпись после нажатия?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    PHP:
    $cities_names = ['Новокрибирск', 'Керамзин', 'Ос Альта', 'Новый Зем'];
    
    echo '<span id="city-name">' . $cities_names[0] . '</span>';
    
    echo '<select id="cities" name="cities" class="selector">';
    foreach ( $cities_names as $keyC => $cities_name  ) {
    	echo '<option value="' . $cities_name . '">' . $cities_name . '</option>';
    }
    echo '</select>';


    JQ:
    jQuery(document).ready(function ($) {
    
    	// устанавливаем значение из localStorage, если оно есть
    	var cityData = localStorage.getItem( 'cityData' );
    	if ( null !== cityData ) {
    		$( '#city-name' ).html( cityData );
    	}
    
    	// функция изменения селекта
    	$( '.selector' ).change( function(e) { 
    
    		var value = $(this).val();
    
    		$( '#city-name' ).html( value ); // меняем город
    		localStorage.setItem( 'cityData', value ); // добавляем его localStorage
    
    	});
    
    });
    Ответ написан
    Комментировать
  • Как в ACF Wordpress вывести значение типа поля Записи с содержимым этой записи?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Шорткод должен возвращать return, а не выводить echo
    Ответ написан
    Комментировать
  • Как вывести последний комментарий в превью?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $args = array(
    	'number' => '1',
    	'post_id' => $post->ID
    );
    
    $comments = get_comments( $args );
    
    foreach ( $comments as $key => $comment ) {
    	echo $comment->comment_content;
    }
    Ответ написан
  • Как сделать навигацию по страницам цифрами?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Функции next_posts_link() и previous_posts_link() будут брать данные только из глобального запроса. Даже если вы укажите в кастомном запросе showposts=5, эти функции все равно будут считать, что на странице выводятся по 10 постов (берут данные из глобальных настроек)

    Цифровую навигацию можете вывести с помощью the_posts_pagination(), тоже работает только с глобальным объектом

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

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

    Если вас не устраивает ограничение на кол-во постов в настройках, вы можете изменить это значение для отдельных запросов на хуке pre_get_posts

    add_action( 'pre_get_posts', 'wpz_home_pagesize', 1 );
    function wpz_home_pagesize( $query ) {
    
    	// Выходим, если это админ-панель или не основной запрос.
    	if ( is_admin() || !$query->is_main_query() )
    		return;
    
    	// Выводим только 5 постов на главной странице
    	if ( is_home() ) {
    		$query->set( 'posts_per_page', 5 );
    	}
    
    }


    Вывести блок с дополнительной информацией после каждого пятого поста можно с помощью простого счетчика

    $i = 1;
    while ( have_posts() ) :
    	the_post();
    
    	get_template_part( 'template-parts/content', get_post_format() );
    
    	// после каждого пятого поста выводим баннер
    	if ( is_int( $i++ / 5 ) ) {
    		get_template_part( 'template-parts/content', 'offer' );
    	}
    
    endwhile;
    Ответ написан
    3 комментария
  • Как прописать в if( get_the_ID() несколько айди?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $post_id = get_the_ID();
    
    if ( in_array( $post_id, [89, 90, 91] ) ) {
    	var_dump( $post_id );
    }
    Ответ написан
    2 комментария
  • Как отобразись дочерние рубрики к которым относится запись Wordpress?

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

    Сейчас вам нужно из массива get_the_category() собрать массивы в массиве родительских категорий

    $categories = get_the_category();
    $out = array();
    foreach ( $categories as $key => $category ) {
    	$out[$category->category_parent][$category->term_id]['title'] = $category->name;
    	$out[$category->category_parent][$category->term_id]['link'] = get_term_link( $category->term_id, 'category' );
    }
    
    foreach ( $out as $keyP => $cats ) {
    
    	// пропускаем, если рубрика родительская
    	if ( $key === 0 )
    		continue;
    
    	echo '<ul class="cats cats-inline">';
    	foreach ( $cats as $key => $cat ) {
    		echo '<li class="cats--item"><a href="' . $cat['link'] . '" class="cats--link">' . $cat['title'] . '</a></li>';
    	}
    	echo '</ul>';
    }


    Скорее всего, при выборе рубрик, вы выбираете только дочерние (Albanian, Arabic и т.д.), поэтому родительских категорий в массиве get_the_category() не будет. Если для работы они вам нужны, то id родительской категории находится в переменной $keyP. Вы можете получить для них данные с помощью get_category() в цикле или предварительно собрать список $ids и получить одним запросом:

    $parents = array();
    foreach ( $categories as $key => $category ) {
    
    	//проверяем, что категория не родительская и ее нет в общем массиве
    	if ( $category->category_parent !== 0 && !in_array( $category->category_parent, $parents ) ) {
    		$parents[] = $category->category_parent;
    	}
    	
    }
    
    $args = [
    	'taxonomy'      => 'category',
    	'include'       => $parents,
    	'fields'        => 'id=>name',
    ];
    
    $terms = get_terms( $args );


    Получить значения из итогового массива $terms можно по id в цикле

    foreach ( $out as $keyP => $cats ) {
    
    	if ( isset( $terms[$keyP] ) ) {
    		echo $terms[$keyP];
    	}
    
    }
    Ответ написан
  • Почему не подключаются js файлы в wp?

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

    621586946fa12022032499.png

    Я бы советовал отказаться от бесполезной затеи с подключением своей jquery, в WP подключается минифицированная v3.6.0, с ней и работайте

    PS. А вообще всю эту простыню стилей и скриптов нужно объединить и минифицировать с помощью gulp или webpack
    Ответ написан
    3 комментария
  • После выбора главной страницы она слетела?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    index.php — это самый базовый шаблон, который используется WordPress в том случае, если он не находит более подходящий. Для главной гораздо больше подходят front-page.php и home.php. Подробнее см. иерархию шаблонов WP

    Поиск редиректа рекомендую начать с отключения всех плагинов (переименовать или удалить папки в директории /wp-content/plugins по SFTP). Если не поможет, проверьте в таблице wp_options БД первые строки siteurl и home, редирект может быть вообще из-за SSL-сертификата

    В крайнем случае id указанной в настройках страницы лежит в строке page_on_front таблицы wp_options
    Ответ написан
    Комментировать