Задать вопрос
  • Почему не работает пагинация на таксономии в кастомном типе записи?

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

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

    При хешировании пароля ВП использует соли и куки с учётом имени домена, поэтому использовать одну таблицу wp_user для двух разных сайтов у вас не получится. Синхронизация таблицы юзеров тем более бессмысленна

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

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

    Редактировать файлы темы правильно через создание дочерней. К примеру, ВП будет искать header.php сначала в дочерней теме, а потом уже в родительской, если не найдет
    Ответ написан
    Комментировать
  • Как в wordpress в базе данных (phpMyAdmin) сделать 4000 копий одной страницы?

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

    // получаем данные исходного поста по слагу
    $post_slug = '1543';
    $args = array( 'name' => $post_slug, 'post_type' => 'post', 'post_status' => 'publish, draft, future', 'numberposts' => 1 );
    $post = get_posts($args)[0];
    
    for ( $i = 1; $i < 2771; $i++ ) {
    	// Создаем массив данных новой записи
    	$post_data = array(
    		'ID'		=> $post->ID++,        
    		'post_title'	=> $post->post_title,
    		'post_name'		=> $post_slug . '-' . $i,  
    		'post_date'		=> $post->post_date,
    		'post_date_gmt'	=> $post->post_date_gmt,    
    		'post_content'	=> $post->post_content,
    		'post_status'	=> 'publish',
    		'post_type'		=> 'post',
    		'post_author'	=> 1,
    	);
    
    	// Вставляем запись в базу
    	$post_id = wp_insert_post( wp_slash( $post_data ) );
    
    	// пишем ошибку/успех
    	if( is_wp_error( $post_id ) ) {
    		var_dump( 'Ошибка инсерта поста ' . $post->post_title . ' таксономии category: ' . $post_id->get_error_message() );
    	} else {
    		var_dump( 'Пост ' . $post->post_title . ' таксономии category опубликован удачно!' );
    		//wp_set_object_terms( $post_id, 'cat_id', 'category' ); // если нужно назначить категорию, заменить cat_id
    	}
    }


    Поменяйте слаги на нужные, я так и на понял какие вам нужны
    Ответ написан
    Комментировать
  • Некорректно работает поиск Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    При регистрации произвольного типа записи при помощи функции register_post_type() вам необходимо указать в аргументах 'public' => true и 'exclude_from_search' = false, если он у вас указан true
    Ответ написан
    Комментировать
  • Как вставить переменную в выражение do shortcode wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    <?php echo do_shortcode( '[shortcode var="' . $var . '"]' ); ?>


    При регистрации шорткода функцией add_shortcode() вам нужно добавить var в список атрибутов шорткода, чтобы использовать ее. Пример #1.2 тут
    Ответ написан
    2 комментария
  • Как добавить в массив с json строкой еще одну строку?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Не совсем понятно, что вы хотите сделать в итоге. Если вы добавляете какие-то данные в массив, то вы должны его сначала получить, а при добавлении проверять, нет ли в нем уже таких же данных, которые вам прилетают в $request. Обычно это делается по id или slug, но у вас ни того, ни другого нет, поэтому для примера соберем все заголовки $titles из полученного массива:

    $descriptionJson = json_decode(file_get_contents($path), true);
    
    $titles = array();
    foreach ( $descriptionJson as $key => $descriptionJsonValue ) {
    	$titles[] = $descriptionJsonValue['title'];
    }


    Теперь, видимо, вы делаете какой-то запрос и получаете ответ в виде объекта. Назову его $requests. Вам нужно получить кол-во элементов, чтобы добавлять новые с id+1 и проверять наличие заголовка в уже существующих данных:

    $count = count($requests); // получаем кол-во объектов для ключа
    
    foreach ( $requests as $key => $request ) {
    	if ( array_search($request->title, $titles) == false ) {
    		$count++;
    
    		$descriptionJson[$count]['title'] = $request->title;
    		$descriptionJson[$count]['thumbnail'] = ImageGenerator::imageDescriptions($request->file('photo'));
    		$descriptionJson[$count]['descriptions'] = $request->description;
    
    	}
    }
    
    $product->descriptions = json_encode($descriptionJson);
    $product->save();
    Ответ написан
    1 комментарий
  • PHP fopen сохраняем в определённую папку ( рендом имя) как сохранить?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Вместо всех этих операций вы можете использовать функцию file_put_contents( $path, $data, LOCK_EX );. В вашем случае $path это $str2, а $data - $str. LOCK_EX блокирует файл на время записи
    Ответ написан
    Комментировать
  • Как перебрать два массива?

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

    $arr1 = [
    		1 => ['id' => 1, 'name' => 'DJ'],
    		2 => ['id' => 2, 'name' => 'Bass'],
    		3 => ['id' => 3, 'name' => 'Vocal'],
    	];
    
    	$arr3 = array();
    	foreach ( $arr1 as $key => $arr1_value ) {
    		$arr3[$arr1_value['id']] = $arr1_value['name'];
    	}
    
    	$arr2 = [
    		['name' => 'Alex', 'specId' => 1],
    		['name' => 'Tim', 'specId' => 2],
    		['name' => 'Dave',  'specId' => 3],
    	];
    
    	echo '<ul>';
    		foreach ( $arr2 as $key => $arr2_value ) {
    			echo '<li>' . $arr3[$arr2_value['specId']] . '</li>';
    		}
    	echo '</ul>';
    Ответ написан
    Комментировать
  • Как сделать вывод дочерних подкатегорий на странице категории Woccommerce Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Функция woocommerce_product_subcategories() запрещена (устарела) с версии 3.3.1

    Выводите так:

    if ( is_product_category() ) {
    		$term = get_queried_object();
    		$taxonomy = $term->taxonomy;
    
    		echo '<h3>Категория: ' . $term->name . '<h3>'; // выводим текущую категорию
    
    		// получаем дочерние, если существуют
    		if ( $term_children = get_term_children( $term->term_id, $taxonomy ) ) {
    			echo '<ul>';
    				foreach ( $term_children as $key => $term_child ) {
    					$term_child = get_term_by( 'id', $term_child, $taxonomy );
    					// выводим дочерние
    					echo '<li><a href="' . get_term_link( $term_child->term_id, $taxonomy ) . '">' . $term_child->name . '</a></li>';
    				}
    			echo '</ul>';
    		}
    	}
    Ответ написан
    6 комментариев
  • Как проверить пост на наличие тегов в WordPress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    // проверяем наличие тегов
    	if ( has_tag() ) {
    		$tags = wp_get_post_tags( get_the_ID() );
    
    		$tags_array = array();
    		foreach ( $tags as $key => $tag ) {
    			$tags_array[] = $tag->term_id; // собираем в массив
    		}
    
    		$args = array (
    			'post_type' => 'post',
    			'tag__in' => $tags_array, // получаем посты, имеющие такой же тег
    			'post__not_in' => array( get_the_ID() ), // исключаем текущий пост
    			'posts_per_page' => 3,
    			'orderby' => rand
    		);
    	} else {
    		// или получаем любые последние посты
    		$args = array (
    			'post_type' => 'post',
    			'posts_per_page' => 3,
    			'orderby' => date
    		);
    	}
    Ответ написан
    1 комментарий
  • Как проверить текущую категорию Woocommerce?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    if ( is_product_category( 10 ) ) {
    // Код...
    }
    Ответ написан
    5 комментариев
  • Как кастомизировать вывод постов собственного типа WP?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    За главную отвечает файл front-page.php; Чтобы кастомизировать основной запрос на главной вы можете использовать хук pre_get_posts с условием $query->is_front_page() && $query->is_main_query()

    За страницу с пост-тайпом отвечает файл single-{post_type}.php, а с кастомной таксономией taxonomy-{taxonomy}.php

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    С помощью acf/carbon fields вы можете создать простое мета-поле у записи со значением true/false

    После чего на хуке pre_get_posts установить для него значение не равное true:

    if( $query->is_front_page() && $query->is_main_query() ) {
    			$query->set( 'meta_key', 'custom_hide_post' );
    			$query->set( 'meta_value', 'true' );
    			$query->set( 'meta_compare', '!=' );
    		}


    Учтите, что поле должно быть создано хотя бы пустым; если ключа не будет, вы скроете все записи с главной
    Ответ написан
    1 комментарий
  • Каким плагином можно реализовать "крутилку"?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Ищите js roulette, вот пример
    Ответ написан
    Комментировать
  • Сделать счетчик скачивания на Word Press?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Или могу посоветовать Kama Click Counter
    Ответ написан
    Комментировать
  • Почему просмотры выводятся выше чем их прописываю в разметке?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Потому что функция the_views() уже имеет echo. Вообще кодстайл ВП подразумевает, что функции с префиксом the_ отвечают за вывод контента с помощью echo, а с префиксом get_ за получение данных для дальнейшей обработки, т.е. return

    Поэтому варианта 2: либо ищите функцию для получения данных, либо пишите так:

    echo '<span class="postviews">';
    	the_views();
    echo  '</span>';
    Ответ написан
    Комментировать
  • Из кириллицы в латиницу. Конвертация в php?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Вам подойдет функция sanitize_title(); Но некоторые спецсимволы будут конвертированы в юникод-формат вида %2С и т.д. Лучше всего декодировать их с помощью urldecode() и удалить из строки все символы за исключением латинских букв, цифр, дефиса и нижнего подчеркивания

    $post_slug = urldecode( sanitize_title($post_title) );
    $post_slug = preg_replace('/([^a-z\d\-\_])/', '', $post_slug);
    Ответ написан
    Комментировать
  • Карта ACF - Можно ли сделать карту на сайте со всеми объектами?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    У acf очень понятная документация. Учтите, что google maps api платное. В качестве условно бесплатных решений могу посоветовать яндекс карты или mapbox
    Ответ написан
    Комментировать
  • Как переместить соцкнопки в постах и страницах?

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

    Либо ищите в исходном коде на каком хуке они висят и вешайте ниже с помощью remove_action() и add_action()
    Ответ написан
    Комментировать