Ответы пользователя по тегу WordPress
  • Как натянуть дополнительную страницу (например контакты) в теме wordpress?

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

    Чтобы создать страницу с контактами вы можете создать файл с произвольным названием, например template-contacts.php. Обязательно в начале файла должны быть следующие строки и ваша верстка

    /*
    Template Name: Шаблон с контактами
    Template Post Type: page
    */


    После этого в админке, при создании новой записи в разделе «Страницы» у вас появится селект с выбором искомого шаблона

    Чтобы заказчик смог менять информацию на этой странице, вы можете использовать плагины ACF или Carbon Fields, они создают поля, которые можно редактировать в админке. Значения этих полей нужно выводить в вашей верстке, тогда информация будет подгружаться из базы данных

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    add_action( 'pre_get_posts', 'repeater_dynamic_query' );
    function repeater_dynamic_query( $query ) {
    
    	if ( $query->get('post_type') === 'product' ) {
    
    		$tax_query['tax_query'] = array( 
    			array(
    				'taxonomy' => 'pa_aktsiya',
    				'field' => 'slug',
    				'terms' =>  array( 'spetspredlozheniya' ),
    				'operator' => 'IN',
    			),
    			array(
    				'taxonomy' => 'product_visibility',
    				'field' => 'name',
    				'terms' => array( 'exclude-from-catalog' ),
    				'operator' => 'NOT IN',
    			) 
    		);
    
    		$query->set( 'tax_query', $tax_query );
    		$query->set( 'no_found_rows', true );
    		
    	}
    }
    Ответ написан
  • Как оставить ссылку без дополнительных атрибутов?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Получить slug можно следующим образом:

    $post_slug = get_post_field( 'post_name', get_post() );


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

    $link = 'https://test.ru/category/admin/test';
    
    $regexp = "/\/(?<slug>[^\/]+)[\/]?$/";
    $reglink = preg_match( $regexp, $link, $match_link );
    $slug = $match_link['slug'];
    
    var_dump( $slug );
    Ответ написан
    Комментировать
  • Как вывести последние добавленные файлы списком на сайте?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    scandir() — получает массив файлов и каталогов, расположенных по указанному пути
    filectime() — возвращает время последнего изменения файла
    Ответ написан
    1 комментарий
  • Почему не подключается скрипт в подвал?

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Управление SEO-тегами в WordPress осуществляется с помощью плагинов Yoast Rank Math, AIO SEO — выбирайте. После изменений нужно отправить страницы на переиндексацию в google search console и yandex webmaster. Туда же желательно добавить карты сайта, чтобы это происходило быстрее
    Ответ написан
    Комментировать
  • Возможно ли вставить в вордпресс в коде - шаблон текста?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    На данный момент meta description в самом WordPress нет, все управление мета-тегами осуществляется с помощью seo-плагинов. Yoast, Rank Math, AIO SEO — выбирайте. У каждого плагина есть документация, где вам нужно найти как собирать свои собственные переменные или шаблоны для мета-данных
    Ответ написан
  • Файл темы header.php под seo?

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

    <!doctype html>
    <html <?php language_attributes(); ?>>
    <head>
    	<meta charset="<?php bloginfo( 'charset' ); ?>" />
    	<meta name="viewport" content="width=device-width, initial-scale=1" />
    	<?php wp_head(); ?>
    </head>


    Вывод всей остальной информации правильно подключать и отключать на хуке wp_head, подключение скриптов и стилей делается на хуке wp_enqueue_scripts

    Сеошную разметку заголовков, описаний и мета-тегов нужно делать с помощью плагинов, выбирайте Yoast или Rank Math, не ошибетесь. Кроме этого вам пригодятся хуки wp_robots и robots_txt, первый печатает теги в <head>, второй создает txt-файл. Карта сайта работает из коробки и находится по адресу /wp-sitemap.xml
    Ответ написан
    Комментировать
  • Как сделать вывод случайных тегов в вордпресс?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $tags = get_tags( [
    	'number' => 5,
    	'orderby' => 'rand',
    ] );
    
    if ( $tags ) {
    	echo '<ul class="tag-list">';
    	foreach ( $tags as $tag ) {
    		echo '<li class="tag-item">';
    			echo '<a href="' . get_tag_link( $tag->term_id ) . '" class="tag-link ' . $tag->slug . '">' . $tag->name . '</a>';
    		echo '</li>';
    	}
    	echo '</ul>';
    }
    Ответ написан
  • Как добавить стили в Head, только на страницах, где виджет используется?

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

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

    2. Можете добавить несколько полей image

    Field::make( 'image', 'crb_image', __( 'Image' ) )

    Или одно поле media_gallery

    Field::make( 'media_gallery', 'crb_media_gallery', __( 'Media Gallery' ) )
    Ответ написан
    Комментировать
  • Как вывести поля названия и описания из таксономии carbon fields?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Название и описание таксономии не имеют отношения к carbon fields, выводятся с помощью функций the_archive_title() и the_archive_description()
    Ответ написан
    Комментировать
  • Как детали заказа order-details.php перенести в заказы orders.php?

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

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

    • ошибки в файле .htaccess;
    • неподходящая версия PHP;
    • некорректные права на файлы и каталоги;
    • большое количество запущенных процессов;
    • большие скрипты;
    • несовместимые или устаревшие плагины.


    Попробуйте написать в тех. поддержку хостинга, воспроизвести ошибку на сайте или посмотреть логи сервера
    Ответ написан
    Комментировать
  • Как изменить GET запрос на фильтрах?

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

    add_filter( 'query_vars', 'add_query_vars' );
    function add_query_vars( $qvars ) {
    
    	$qvars[] = 'filter_naznachenie';
    	$qvars[] = 'orderby';
    
    	return $qvars;
    }


    Строить ссылки нужно не через добавление символов & и ? руками, а с помощью add_query_arg()

    $link = get_the_permalink()
    $link = add_query_arg( [ 'orderby' => 'price', 'filter_naznachenie' => 'svet' ], $link );
    
    echo '<a href="' . $link . '"></a>';
    Ответ написан
    Комментировать
  • Cравнить Дату События (ACF) и Дату сейчас — WP_Query?

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

    $current_date = date( 'Y-m-d' );
    $today = '2021-11-05';
    
    if ( $current_date == $today ) {
    	var_dump( 'сегодня 5 ноября' );
    } else {
    	var_dump( 'сегодня НЕ 5 ноября' );
    }


    Надежнее сравнивать через преобразование в метку времени Unix, для случаев, если даты в разных форматах

    $current_date = date( 'Y-m-d' );
    $today = '05-11-2021';
    
    if ( strtotime( $current_date ) == strtotime( $today ) ) {
    	var_dump( 'сегодня 5 ноября' );
    } else {
    	var_dump( 'сегодня НЕ 5 ноября' );
    }


    В документации ACF, при выборе постов даты сравниваются следующим образом:

    // Find todays date in Ymd format.
    $today = date('Ymd');
    
    // Query posts using a meta_query
    $args = array(
    	'post_type' => 'event',
    	'meta_query' => array(
    		array(
    			'key'     => 'event_date',
    			'compare' => '=',
    			'value'   => $today,
    		)
    	),
    );
    Ответ написан
    Комментировать
  • Как вывести детей определённого родителя, функцией wp_list_pages?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $parent_id = 6;
    $children = wp_list_pages( 'title_li=&child_of=' . $parent_id . '&echo=0' );
    if ( $children) : ?>
        <ul>
            <?php echo $children; ?>
        </ul>
    <?php endif;
    Ответ написан
    Комментировать
  • Как сделать такие иконки в вордпресс?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    При чем здесь WordPress? Это банальная верстка. Если вопрос касается вывода информации из админки, то решается с помощью плагинов ACF или Carbon Fields
    Ответ написан
    Комментировать
  • Как в WordPress найти категорию Misc в массиве?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Misc это что за сущность? Заголовок? Тогда нужно получить массив заголовков и в них искать

    $getMassivmenu = get_terms(
    	'taxonomy' => 'product_cat',
    	'fields' => 'names'
    );
    
    if ( in_array( 'Агрохимикаты', $getMassivmenu ) ) {
    	echo 'Нашёл Агрохимикаты';
    }
    if ( in_array( 'Misc', $getMassivmenu ) ) {
    	echo 'Нашёл Misc';
    } else {
    	echo 'Ничего не нашел';
    }


    Чтобы не мучаться, добавьте эту функцию в вашу тему и печатайте переменные vardump( $var )

    function vardump( $var ) {
    	if ( current_user_can( 'manage_options' ) ) {
    		echo '<pre>';
    			var_dump( $var );
    		echo '</pre>';
    	}
    }
    Ответ написан
  • Как вывести разные контактные формы на разных языках?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $locale = get_locale();
    
    if ( $locale == 'ru_RU' ) {
    	echo do_shortcode( '[contact-form-7 id="158" title="Контактная форма"]' );
    } else {
    	echo do_shortcode( '[contact-form-7 id="485" title="Контактна форма"]' );
    }
    Ответ написан
    Комментировать