Ответы пользователя по тегу WordPress
  • Открыть ссылку в новой вкладке?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вот массив параметров, которые принимает этот метод. Вам нужен $args['meta']['target'] = '_blank'

    $args = array(
    	'id'     => '',      // ID элемента меню. Обязательный. Строка. 
    	'title'  => '',      // Заголовок элемента меню. Обязательный. Строка. 
    	'parent' => '',      // ID родительского элемента меню. Строка. 
    	'href'   => '',      // Ссылка для этого элемента меню. Строка. 
    	'group'  => false,   // Является ли этот элемент группой. Логический. По умолчанию false
    	'meta'   => array(   // Массив дополнительных данных элемента. По умолчанию: пустой массив.
    		'html'     => '', // Произвольный HTMl код, который будет добавлен в конце оборачивающего LI тега элемента меню.
    		'class'    => '', // Атрибут тега 'class' 
    		'rel'      => '', // Атрибут тега 'rel' 
    		'lang'     => '', // Атрибут тега 'lang' 
    		'dir'      => '', // Атрибут тега 'dir' 
    		'onclick'  => '', // Атрибут тега 'onclick' 
    		'target'   => '', // Атрибут тега 'target' 
    		'title'    => '', // Атрибут тега 'title' 
    		'tabindex' => '', // Атрибут тега 'tabindex' 
    	),
    )
    Ответ написан
    Комментировать
  • Как сделать из двух сайтов один с сохранением разных тем?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Multisite это не плагин, работает из коробки с помощью установки констант в файле wp-config.php и правил в .htaccess. Мультисайт позволяет в рамках одной админки администрировать несколько сайтов, каждый сайт будет иметь разные таблицы в базе данных ( wp_options, wp_2_options, wp_posts, wp_2_posts и т.д. ). Каждый сайт в мультисайте может иметь свои настройки, свою тему и свой набор активированных плагинов

    Что такое «слияние» в вашем понимании это загадка. Вы хотите, чтобы база была одна, но часть страниц имели одну тему и плагины, а другая часть другую тему и плагины? Так работать не будет

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    В meta_value указываете искомый шаблон, там где $page->post_title выводится список заголовков страниц с этим шаблоном

    $pages = get_pages( [
    	'meta_key'     => '_wp_page_template',
    	'meta_value'   => 'page-tpl.php',
    	'hierarchical' => 0
    ] );
    
    foreach( $pages as $page ) {
    	echo '<p>' . $page->post_title .'</p>';
    }
    Ответ написан
    1 комментарий
  • Как запустить slick slider на моб версии для повторителя из ACF?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Где это вы подключили slick slider?

    Заходите в документацию, подключаете скрипты и стили с cdn или с помощью wp_enqueue_scripts(), слайды оборачиваете в контейнер, для этого контейнера пишите инициализацию с настройками

    Вот примерная html-разметка, которая у вас должна получиться в итоге

    <html>
      <head>
      <title>Slick Slider Page</title>
      <link rel="stylesheet" type="text/css" href="slick/slick.css"/>
      <link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>
      </head>
      <body>
    
      <div class="slider">
        <div class="slider__item">Slide 1</div>
        <div class="slider__item">Slide 2</div>
        <div class="slider__item">Slide 3</div>
      </div>
    
      <script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
      <script type="text/javascript" src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
      <script type="text/javascript" src="slick/slick.min.js"></script>
    
      <script type="text/javascript">
        $(document).ready(function(){
          $('.slider').slick({
            setting-name: setting-value
          });
        });
      </script>
    
      </body>
    </html>
    Ответ написан
    Комментировать
  • Вирус генерирует htaccess и заражает сайт на wordpress. Как исправить?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    1. Удалить нуленые (пиратские) плагины и темы
    2. Почистить базу
    3. Перезалить файлы ядра, темы и плагинов
    4. Если тема самописная, перебрать файлы руками на наличие в ней чужого кода
    Ответ написан
    Комментировать
  • Как сделать вывод постов на отдельной странице (не на главной)?

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

    Для главной нужно использовать front-page.php или home.php, а шаблон по умолчанию это вообще page.php

    Подробнее читайте иерархию шаблонов
    Ответ написан
  • Как раз и навсегда уяснить, как создавать favicon для Яши?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    WP предлагает загрузить 512х512, обрезает и выводит 32х32, 180х180, 192х192, 270х270 по умолчанию. Возможно вы не те пути смотрите и, возможно, они у вас и не выводятся

    Для сбора favicon у Яндекса существует отдельный робот и по отзывам некоторых пользователей этот робот заходит на сайты раз в 1-3 месяца

    Лично у меня никогда не возникало проблем с обновлением контента, в том числе фавиконок в поисковиках, если отправить карту сайта в webmaster и search-console
    Ответ написан
    Комментировать
  • Как сделать разделение на категории и подкатегории WooCommerce?

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

    1. Для начала нам нужно сделать запрос терминов и пересобрать полученный объект в массив таким образом, чтобы родительская рубрика лежала в одном подмассиве с дочерними, т.е. чтобы у них был общий ключ

    $taxonomy = 'category';
    $args = [
    		'taxonomy' => $taxonomy, // название таксономии с WP 4.5
    		'hide_empty' => false,
    ];
    
    if ( $terms = get_terms( $args ) ) {
    	$output = array();
    	foreach ( $terms as $key => $term ) {
    		if ( $term->parent == 0 ) {
    			$output[$term->term_id]['parent']['title'] = $term->name;
    			$output[$term->term_id]['parent']['link'] = get_term_link( $term->term_id, $taxonomy );
    		} else {
    			$output[$term->parent]['children'][$key]['title'] = $term->name;
    			$output[$term->parent]['children'][$key]['link'] = get_term_link( $term->term_id, $taxonomy );
    		}
    	}
    }


    2. На выходе, в переменную $output мы получаем массивы такого вида

    6108f82f21835125924035.png

    3. Теперь нам остается вывести все значения в нужном нам виде

    if ( isset( $output ) && is_array( $output ) && !empty( $output ) ) {
    
    	foreach ( $output as $key => $items ) {
    		echo '<h2 class="title"><a href="' . $items['parent']['link'] . '" class="title-link">' . $items['parent']['title'] . '</a></h2>';
    		if ( isset( $items['children'] ) ) {
    			echo '<ul class="list">';
    			foreach ( $items['children'] as $key => $item ) {
    				echo '<li class="list-item"><a href="' . $item['link'] . '" class="list-link">' . $item['title'] . '</a></li>';
    			}
    			echo '</ul>';
    		}
    	} // end foreach
    
    } // end if


    PS. Нашел в таблице wp_options опцию category_children, в которой уже записаны связи родитель → ребенок, так что можно использовать ее и упростить код выше
    Ответ написан
    Комментировать
  • Как в wordpress записать данные шаблона, картинки, тайла, дескрипшина в БД?

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

    Тайтлов и дескрипшинов по умолчанию в WP нет, предположу, что вы пользуетесь каким-то сеошным плагином и, скорее всего, он так же хранит эти данные в мета-полях записей. Поэтому найдите в документации или базе как называются ключи у этих полей и используйте те же функции add_post_meta() или update_post_meta()

    Что касается установки изображения записи, вы можете воспользоваться функцией media_sideload_image() или сочетанием wp_insert_attachment() и set_post_thumbnail(). Разница в том, что первая загружает изображение в медиатеку WP и устанавливает его для записи, а последние создают только записи в базе

    PS. Для отдельной установки категорий, таксономий и тегов вам может пригодится функция wp_set_object_terms()
    Ответ написан
    2 комментария
  • Как получить название термина атрибута товара по слагу?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Потому что 'product' это пост тайп, а не термин. Попробуйте использовать 'product_tag'

    $term = get_term_by( 'slug', 'ink_black', 'product_tag' );
    var_dump( $term->name );
    Ответ написан
    Комментировать
  • Можно ли восстановить карту сайта?

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

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

    add_filter( 'the_content', 'additional_links_to_content' );
    function additional_links_to_content( $content ) {
    
    	if ( is_single() && get_post_type() === 'service' ) {
    
    		$add = '<h4>Дополнительная информация</h4>';
    		$add .= '<ul>';
    			$add .= '<li><a href="#">Ссылка 1</li>';
    			$add .= '<li><a href="#">Ссылка 2</li>';
    		$add .= '</ul>';
    
    		$content .= $add;
    
    	}
    
    	return $content;
    }


    Вы можете использовать более сложную логику, положив какую-то информацию в мета поля с помощью acf или carbon fields и использовать ее на этом фильтре

    add_filter( 'the_content', 'add_event_date_to_content' );
    function add_event_date_to_content( $content ) {
    
    	if ( is_single() && get_post_type() === 'event' ) {
    
    		if ( $event_date = get_post_meta( get_the_ID(), '_event_date', true ) ) {
    			$content .= '<p>Дата концерта: ' . $event_date . '</p>';
    		}
    
    	}
    
    	return $content;
    }
    Ответ написан
  • Почему на сайте вордпрес, через поиск показывает только одну страницу с записями (10 шт), если записей у меня штук 40?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    • search.php - шаблон который отвечает за результаты поиска
    • the_posts_pagination() - функция, которая выводит пагинацию
    Ответ написан
    Комментировать
  • Разные header на разных страницах - как подключать разные стили в function.php?

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
  • Как вывести ссылку с социальными иконками через acf?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    1. Прочитать документацию по функции the_field()
    2. Узнать, что у вас переменной var_dump( get_field('social') );
    Ответ написан
    Комментировать
  • Почему не работает пагинация на архивной странице?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Потому что на архивной странице уже есть глобальный запрос записей, новый WP_Query() вызывать не нужно. Откройте любую тему twenty и посмотрите как должен выглядеть шаблон archive.php, а эту отсебятину можно смело удалить
    Ответ написан
    Комментировать
  • Как добавить ID в имя поста при его создании?

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

    add_filter( 'the_title', 'add_event_time_in_the_title', 10, 2 );
    function add_event_time_in_the_title( $title, $post_id ) {
    
    	// добавляем время проведения мероприятий после заголовка
    	if ( get_post_type() === 'event' ) {
    		$event_time = get_post_meta( get_the_ID(), '_event_time', true );
    		$title = $title . ' ' . $event_time;
    	}
    
    	return $title;
    }
    Ответ написан
  • Как в теме Reboot Wordpress вывести превью стихов без удаления тегов, четверостишьями?

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

    add_filter( 'wp_trim_excerpt', 'first_paragraph_excerpts', 99, 2 );
    function first_paragraph_excerpts( $excerpt, $raw_excerpt ) {
    	if ( is_admin() )
    		return $excerpt;
    	
    	if ( '' !== $raw_excerpt )
    		return $excerpt;
    	
    	$content = apply_filters( 'the_content', get_the_content() );
    	return substr( $content, 0, strpos( $content, '</p>' ) + 4 );
    }
    Ответ написан
    Комментировать
  • Как раскрасить текст в статьях блога на WP?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Используйте highlight.js
    Ответ написан
    Комментировать