Задать вопрос
Ответы пользователя по тегу WordPress
  • Wordpress - получить размер картинки?

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

    $img = wp_get_attachment_image( $attachment_id, $size, $icon, $attr );


    Еще лучше использовать свойства тега <img> srcset, в который вы можете передать ссылки на все доступные размеры изображений. Из них браузер сможет выбрать наиболее подходящий
    Ответ написан
    Комментировать
  • Как сделать единые товары на WordPress Мультисайт?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    У всех сайтов в системе мультисайта свои собственные таблицы wp_options, wp_posts и т.д.

    Варианта два:

    • Писать скрипт, который будет дублировать товар на остальные домены (в базе данных)
    • При выводе товаров во фронт делать запрос в базу данных основного сайта с помощью switch_to_blog()
    Ответ написан
    3 комментария
  • Как определить видимость записи в WordPress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Событие после авторизации пользователя называется login_redirect

    add_filter( 'login_redirect', 'filter_function_name_7309', 10, 3 );
    function filter_function_name_7309( $redirect_to, $requested_redirect_to, $user ){
    	// filter...
    
    	return $redirect_to;
    }
    Ответ написан
    Комментировать
  • Как показывать разное количество записей?

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

    add_action( 'template_redirect', 'category_redirect' );
    function category_redirect() {
    
    	if ( is_category() && get_queried_object()->count == 1 ) {
    
    		global $wp_query;
    		
    		if ( isset( $wp_query->posts[0]->ID ) ) {
    			wp_redirect( get_the_permalink( $wp_query->posts[0]->ID )  );
    		}
    		
    	}
    }
    Ответ написан
    Комментировать
  • Как сделать пагинацию на странице поиска (wordpress)?

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

    <?php get_header(); ?>
    
    	<section id="primary" class="content-area">
    		<main id="main" class="site-main" role="main">
    
    		<?php if ( have_posts() ) : ?>
    
    			<header class="page-header">
    				<h1 class="page-title">
    				<?php
    				/* translators: %s: The search query. */
    				printf( __( 'Search Results for: %s', 'twentysixteen' ), '<span>' . esc_html( get_search_query() ) . '</span>' );
    				?>
    				</h1>
    			</header><!-- .page-header -->
    
    			<?php
    			// Start the loop.
    			while ( have_posts() ) :
    				the_post();
    
    				/**
    				 * Run the loop for the search to output the results.
    				 * If you want to overload this in a child theme then include a file
    				 * called content-search.php and that will be used instead.
    				 */
    				get_template_part( 'template-parts/content', 'search' );
    
    				// End the loop.
    			endwhile;
    
    			// Previous/next page navigation.
    			the_posts_pagination(
    				array(
    					'prev_text'          => __( 'Previous page', 'twentysixteen' ),
    					'next_text'          => __( 'Next page', 'twentysixteen' ),
    					'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
    				)
    			);
    
    			// If no content, include the "No posts found" template.
    		else :
    			get_template_part( 'template-parts/content', 'none' );
    
    		endif;
    		?>
    
    		</main><!-- .site-main -->
    	</section><!-- .content-area -->
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>
    Ответ написан
    Комментировать
  • Как создавать последующие сайты для заказчиков?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    У большинства хостингов установка WordPress производится в 2-3 клика. Сначала нужно зарегистрировать нужный вам домен. В основной панели управления будет кнопка «Установить CMS» или подобная, в установке выбираете приобретенный домен, логин и пароль

    Вход в админку по адресу domain.ru/wp-admin

    62363e148489a998008481.png

    Скрин с beget.com

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    foreach ( $states as $key => $state ) {
    	echo $key;
    }
    Ответ написан
  • Как перенаправлять на определенную страницу по имени пользователя?

    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 слешей

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