Задать вопрос
  • Помощь со структурой, как правильно и чтобы работало?

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

    Структура, которую вы хотите у вас вряд ли получится. Скорее всего у вас будет три типа записи, и для каждого типа записи по две таксономии - категория и город

    Покажу, как я программно публиковал области с их административными центрами для нескольких таксономий

    // таксономии
    $terms_array = array( 'activities', 'news' );
    
    // области
    $areas_array = array(
    	'AMU' => 'Амурская область',
    	'ARK' => 'Архангельская область',
    	'AST' => 'Астраханская область',
    	'BEL' => 'Белгородская область',
    );
    
    // административные центры
    $cities_array = array(
    	'AMU' => 'Благовещенск',
    	'ARK' => 'Архангельск',
    	'AST' => 'Астрахань',
    	'BEL' => 'Белгород',
    );
    
    // цикл областей
    foreach ( $areas_array as $keyI => $area_item ) {
    
    	$term_title = $area_item; // заголовок области
    	$term_slug = $keyI; // слаг области
    
    	$term_sub_title = $cities_array[$keyI]; // по слагу находим город
    	$term_sub_slug = urldecode( sanitize_title($term_sub_title) );
    	$term_sub_slug = preg_replace( '/([^a-z\d\-\_])/', '', $term_sub_slug ); // конвертируем город в слаг
    
    	// цикл таксономий
    	foreach ( $terms_array as $keyTI => $terms_item ) {
    
    		// публикуем область
    		$term_id = get_term_by( 'slug', $term_slug, $terms_item )->term_id ?: '0';
    		if ( $term_id == '0' ) {
    			$term_args = array(
    				'cat_ID' => $term_id,
    				'cat_name' => $term_title,					// название категории. Обязательный.
    				'category_description' => '',				// описание категории
    				'category_nicename' => $term_slug,			// слаг категории
    				'category_parent' => '',
    				'taxonomy' => $terms_item
    			);
    
    			$term_id = wp_insert_category( $term_args );
    
    			// пишем ошибку/успех
    			if( is_wp_error($term_id) ) {
    				$log['error'][] = 'Ошибка инсерта термина ' . $term_title . ' таксономии ' . $terms_item . ': ' . $term_id->get_error_message();
    			} else {
    				$log['success'][] = 'Термин ' . $term_title . ' таксономии ' . $terms_item . ' опубликован удачно!';
    			}
    
    		} // end if $term_id == '0'
    
    		// публикуем административный центр
    		$term_sub_id = get_term_by( 'slug', $term_sub_slug, $terms_item )->term_id ?: '0';
    		if ( $term_sub_id == '0' ) {
    			$term_sub_args = array(
    				'cat_ID' => $term_sub_id,
    				'cat_name' => $term_sub_title,				// название категории. Обязательный
    				'category_description' => '',				// описание категории
    				'category_nicename' => $term_sub_slug,		// слаг категории
    				'category_parent' => $term_id,
    				'taxonomy' => $terms_item
    			);
    
    			$term_sub_id = wp_insert_category( $term_sub_args );
    
    			// пишем ошибку/успех
    			if( is_wp_error($term_sub_id) ) {
    				$log['error'][] = 'Ошибка инсерта термина ' . $term_sub_title . ' таксономии ' . $terms_item . ': ' . $term_sub_id->get_error_message();
    			} else {
    				$log['success'][] = 'Термин ' . $term_sub_title . ' таксономии ' . $terms_item . ' опубликован удачно!';
    			}
    
    		} // end if $term_sub_id== '0'
    
    	} // end foreach $terms_array
    
    } // end foreach $areas_array


    PS Массив $log можно печатать или писать в файл log.txt
    PSS Я могу прислать весь массив в областями и их адмистративными центрами
    Ответ написан
    Комментировать
  • Свой шаблон для всех подкатегорий одной рубрики wordpress?

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

    if ( get_queried_object()->parent == '12' ) {
    	get_template_part( 'templates/archive', 'service' );
    } else {
    	get_template_part( 'templates/archive', 'common' );
    }


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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Нужно использовать репитер, он есть в платной версии ACF Pro. В качестве альтернативы можете использовать Carbon Fields
    Ответ написан
    Комментировать
  • Из-за чего не работает the_posts_pagination на index.php?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Не нужно запрашивать посты get_posts(), основной цикл уже инициализирован

    Откройте любой index.php twenty темы и увидите

    if ( have_posts() ) :
    	
    	while ( have_posts() ) :
    		the_post();
    
    		get_template_part( 'template-parts/content', get_post_format() );
    
    	endwhile;
    
    	the_posts_pagination();
    
    else :
    	get_template_part( 'template-parts/content', 'none' );
    endif;


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

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

    • is_user_logged_in() проверка на авторизацию
    • wp_redirect() редирект
    Ответ написан
  • Ошибка wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Для этой страницы в теме нет подходящего шаблона, поэтому берет index.php, как самый базовый
    Ответ написан
    3 комментария
  • Создать структуру меню в wordpress?

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Потому что при получении данных мета-поля используется глобальная переменная $post. У вас же она не установлена и нужно в функцию передавать id руками the_field( 'days_header', $day->ID );
    Ответ написан
    1 комментарий
  • Как вывести только подкатегории рубрики на главной?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Попробуйте использовать get_terms() с аргументом 'parent', чтобы получить прямых потомков выбранного термина

    $terms = get_terms( [
    		'taxonomy'   => 'category',
    		'parent'     => $term_id,
    		'hide_empty' => false,
    	] );
    Ответ написан
    Комментировать
  • Можно ли как то ограничится одним шаблоном для терма?

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

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    На любой CMS это будет самописный функционал. За WordPress скажу, что нужно делать update_user_meta() за «выполненное задание»
    Ответ написан
    Комментировать
  • Безопасная регистрация домена - где и как регистрировать, чтобы не отжали?

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

    Например, есть известная история с доменом nissan.com, который принадлежит чуваку с такой фамилией. Автопроизводитель судился с ним лет 10, потратили миллионы долларов и в итоге домен без права на обжалование остался у владельца, хотя компания просто могла сделать ему щедрое денежное предложение

    Ближе к нам история с Дом.ru (интернет-провайдер), которые хотели отжать домен dom.ru и у них тоже ничего не получилось

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

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    У каждого поста должно быть поле для записи гео-координат. Получаете посты с помощью get_posts() или wp_query(), мету с помощью get_post_meta() и циклом собираете json данные как в этом примере Проблема при добавлении 10 тыс точек на яндекс карты api?
    Ответ написан
    Комментировать
  • Как вывести данные из JSON?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вам нужно собрать данные всех объектов в формате json

    $mask = array();
    $mask['type'] = 'FeatureCollection';
    
    foreach ( $variable as $key => $value ) {
      $mask['features'][] = array(
        "type" => 'Feature',
        "id"=> $key,
        "geometry" => array (
          "type" => 'Point',
          "coordinates" => [(float) $value->lat, (float) $value->long],
        ),
        "properties" => array (
          "balloonContentBody" => "<strong class='map-title'><a class='link' href='" . $value->post_link . "'>" . $value->post_title . "</a></strong>",
          "balloonContentFooter" => "<a class='hidden' href='#'>Я был здесь!</a>",
          "clusterCaption" => "<strong>" . $value->post_title . "</strong>",
          "hintContent" => "<strong>" . $value->post_title . "</strong>"
        )
      );
    }


    Теперь json_encode( $mask ) передать в обработчик как в этом примере https://yandex.ru/dev/maps/jsbox/2.1/object_manager/
    Ответ написан
    Комментировать
  • Как вывести 3 поста в секцию "Другие новости" в wordpress со своей версткой?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    // собираем запрос
    $my_query = new WP_Query( [
    	'numberposts' => 3,
    	'category'    => 'news',
    	'post_type'   => 'post',
    ] );
    
    if ( $my_query->have_posts() ) {
    
    	// основной цикл
    	while ( $my_query->have_posts() ) {
    		$my_query->the_post();
    
    		the_title( '<h2>', '</h2>' );
    	}
    
    	wp_reset_postdata(); // возвращаем глобальный цикл
    }
    Ответ написан
    Комментировать
  • Как чистить базу после advanced custom field?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    // Query posts.
    $posts = get_posts(array(
        'post_type'         => 'post',
        'posts_per_page'    => -1,
        'meta_key'          => 'color'
    ));
    
    // Loop over results and delete.
    if( $posts ) {
        foreach( $posts as $p ) {
            delete_field('color', $p->ID);
        }
    }
    Ответ написан
    Комментировать
  • Как сделать пагинацию WordPress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    // получаем номер страницы пагинации
    $current = absint( max( 1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ) ) );
    
    // собираем запрос
    $my_query = new WP_Query( [
    	'post_type'      => 'page',
    	'posts_per_page' => 10,
    	'paged'          => $current,
    ] );
    
    if ( $my_query->have_posts() ) {
    
    	// основной цикл
    	while ( $my_query->have_posts() ) {
    		$my_query->the_post();
    
    		###########
    	}
    
    	wp_reset_postdata(); // возвращаем глобальный цикл
    	
    	// выводим пагинацию
    	echo wp_kses_post(
    		paginate_links( [
    			'total'   => $my_query->max_num_pages, // количество берем из дефолтной опции запроса
    			'current' => $current, // текущая страница
    		] )
    	);
    } else {
    	// выводим шаблон "нет контента", если в запросе нет постов
    	get_template_part( 'templates/content', 'none' );
    }
    Ответ написан
  • Как запустить на локалке сайт с хостинга?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Еще можете посмотреть локальный сервер Laragon, там вообще WordPress одной кнопкой устанавливается — руками базу создавать не обязательно. Базу можете импортировать плагином или через phpMyAdmin, как уже советовали
    Ответ написан
    Комментировать
  • Готовая cms или разработка?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    На wordpress полно плагинов для организации платного доступа к контенту Wordpress плагин платного доступа к сайту?
    Ответ написан
  • Почему не срабатывает функция update_post_meta, при вызове хука content_save_pre?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Лучше используйте save_post

    add_action( 'save_post', 'skill_save_post' );
    if ( !function_exists( 'skill_save_post' ) ) {
    	function skill_save_post( $post_id ) {
    
    		update_post_meta( $post_id, 'my_custom_field', 'my_custom_value' );
    
    	}
    }
    Ответ написан
    Комментировать