Ответы пользователя по тегу WordPress
  • Как правильно подключить get_header() на других шаблонах?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Чтобы все работало правильно, в файле header.php должны быть функция wp_head(), а в файле footer.php функция wp_footer(). Проще всего сгенерировать стартовый шаблон на underscores.me
    Ответ написан
  • Как просмотреть все записи одного языка Polylang Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    61915d8ecd833844169249.jpeg
    Ответ написан
    Комментировать
  • Как wordpress новичку понять своё место в мире?

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

    По сути, вариантов развития три:

    1. идти на галеру (офис)
    2. идти на фриланс
    3. заниматься пэт-проектами


    Везде свои особенности и сложности. Хорошую студию сложно найти и сложно устроиться, в плохой вас будут эксплуатировать до выгорания. На фрилансе сложно найти хорошего заказчика. Пэт-проектами сложно заниматься без опыта, нужно много знать помимо разработки: seo, дизайн, юзабилити, копирайтинг, маркетинг, чекать и понимать тренды рынка в целом

    Конкретнее по вопросам:

    1. К сожалению, единого стандарта нет, делают кто во что горазд. Для магазинов с оплатой однозначно стоит брать woocomerce, для остальных сайтов хорошая практика — это использование гутенберг-блоков или ACF для вывода информации на фронт. Использование конструкторов — плохой путь для разработчика. По стандартам написания кода рекомендую посмотреть WPCS
    2. Возможно
    3. Тут есть два лагеря. Одни считают, что правильно брать популярную тему от разработчиков и делать к ней дочернюю, потому что она поддерживается крутой командой и они что-то там регулярно фиксят и делают. Другие вам скажут, что проще написать тему с нуля или стартовую болванку, чем выпиливать весь ненужный мусор из родительской
    4. Советую смотреть OceanWP, Ashe, Kadence и стартовые twenty
    5. Есть документация по астре
    6. Одним из первых сайтов который я делал был мой собственный сайт с портфолио, можете начать с этого. Или можете посмотреть концепты на behance и написать авторам предложения реализовать их для портфолио
    Ответ написан
    Комментировать
  • Есть аналог для вывода составных частей заказа по аналогии с товаром?

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

    $args = array(
    	'author' => get_current_user_id();
    );
    
    $orders = wc_get_orders( $args );
    
    foreach ( $orders as $key => $order ) {
    
    	// данные заказа
    	$data = $order->get_data();
    
    	echo $data['id'];
    	echo $data['parent_id'];
    	echo $data['status'];
    	echo $data['currency'];
    	echo $data['version'];
    	echo $data['payment_method'];
    	echo $data['payment_method_title'];
    	echo $data['payment_method'];
    	echo $data['payment_method'];
    
    	// еще данные
    	echo $data['discount_total'];
    	echo $data['discount_tax'];
    	echo $data['shipping_total'];
    	echo $data['shipping_tax'];
    	echo $data['cart_tax'];
    	echo $data['total_tax'];
    	echo $data['customer_id']; 
    
    	// ... и все в том же духе
    
    }
    Ответ написан
  • Как на странице общих настроек вывести textarea?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Регистрировать все настройки нужно на хуке customize_register, добавлять опции и элементы управления с помощью методов add_setting() и add_control()

    $wp_customize->add_setting( 'themeslug_textarea_setting_id', array(
      'capability' => 'edit_theme_options',
      'default' => 'Lorem Ipsum Dolor Sit amet',
      'sanitize_callback' => 'sanitize_textarea_field',
    ) );
    
    $wp_customize->add_control( 'themeslug_textarea_setting_id', array(
      'type' => 'textarea',
      'section' => 'custom_section', // Add a default or your own section
      'label' => __( 'Custom Text Area' ),
      'description' => __( 'This is a custom textarea.' ),
    ) );


    И вот примеры из документации

    PS. Это для настроек в консоли, но я оставлю ответ
    Ответ написан
    Комментировать
  • Как натянуть дополнительную страницу (например контакты) в теме 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>';
    Ответ написан
    Комментировать