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

    @Aricus
    Если заголовки разные, то второй заголовок должен браться не из the_title( ); , а откуда-то ещё. То есть вы можете или добавить его напрямую в контенте страницы, или подставить в теме сайта оттуда, откуда нужно.
    Ответ написан
  • Не выводит изображение плагин ACF?

    @Aricus
    <?php $acf_slid = get_sub_field( 'acf_slid' ); ?>

    Может, "acf_slide", а вся ошибка в том, что вы в названии ошиблись?
    У меня работает так:
    $thisImg = get_field('post-img', $id);
    echo '<img src="'.$thisImg['url'].'" alt="'.$thisImg['alt'].'">';

    А в комментариях правильно предложили. Посмотрите, что выведет:
    var_dump($acf_slid);
    Ответ написан
  • Как адаптировать меню с шаблона под wordpress?

    @Aricus
    Да, меню в wordpress - это жесть. Приведу пример своего меню. Должно подсказать некоторые неочевидные вещи.
    Это в header.php:
    <?php wp_nav_menu( array(
    	'sort_column' => 'menu_order',
    	'theme_location' => 'primary-menu',
    	'container' => false,
    	'menu_class' => 'navigation_menu',
    	'walker' => new My_Walker_Nav_Menu()
    ) ); ?>

    А это в functions.php:
    // Главное меню
    class My_Walker_Nav_Menu extends Walker_Nav_Menu {
      function start_lvl(&$output, $depth = 1, $args = Array()) {
        $indent = str_repeat("\t", $depth);
        $output .= "\n$indent<ul class=\"navigation_submenu-".$depth."\">\n";
      }
    	public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
    		if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
    			$t = '';
    			$n = '';
    		} else {
    			$t = "\t";
    			$n = "\n";
    		}
    		$indent = ( $depth ) ? str_repeat( $t, $depth ) : '';
    
    		$classes = empty( $item->classes ) ? array() : (array) $item->classes;
    		$classes[] = 'menu-item-' . $item->ID;
    
    		$args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
    
    		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) );
    		$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
    
    		$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth );
    		$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
    
    		$output .= $indent . '<li' . $id . $class_names .'>';
    
    		$atts = array();
    		$atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';
    		$atts['target'] = ! empty( $item->target )     ? $item->target     : '';
    		$atts['rel']    = ! empty( $item->xfn )        ? $item->xfn        : '';
    		$atts['href']   = ! empty( $item->url )        ? $item->url        : '';
    
    		$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
    
    		$attributes = '';
    		foreach ( $atts as $attr => $value ) {
    			if ( ! empty( $value ) ) {
    				$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
    				$attributes .= ' ' . $attr . '="' . $value . '"';
    			}
    		}
    
    		$title = apply_filters( 'the_title', writeTitle($item->title), $item->ID );
    
    		$title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth );
    		
    		
    		if ($depth == 1) {
    			$writeIcon = '<div class="submenu__icon">
    				<div class="submenu__icon__img" style="background-image: url('.get_illImg($item->object_id)['url'].');"></div>
    			</div>&nbsp;';
    		} else {
    			$writeIcon = '';
    		}
    		$item_output = $args->before;
    		if (($depth == 1) && (get_field('activity', 'category_' .$item->object_id) == 'inactive')) {
    			$item_output .= '<div' .addTooltip($item->object_id). '>';
    			$item_output .= $writeIcon;
    			$item_output .= $title;
    			$item_output .= '</div>';
    		} else {
    			$item_output .= '<a'. $attributes .'' .addTooltip($item->object_id). '>';
    			$item_output .= $writeIcon;
    			$item_output .= $args->link_before . $title . $args->link_after;
    			$item_output .= '</a>';
    		}
    		$item_output .= $args->after;
    
    		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    	}
    	
    }

    Вот, что получилось в результате:
    <ul id="menu-%d0%be%d1%81%d0%bd%d0%be%d0%b2%d0%bd%d0%be%d0%b5-%d0%bc%d0%b5%d0%bd%d1%8e" class="navigation_menu"><li id="menu-item-104" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-8 current_page_item menu-item-has-children menu-item-104"><a href="https://my.site.ru/">Продукция</a>
    <ul class="navigation_submenu-0">
    	<li id="menu-item-304" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-304"><a href="https://my.site.ru/knx"><div class="submenu__icon">
    				<div class="submenu__icon__img" style="background-image: url(https://my.site.ru/wp-content/uploads/2019/04/KNX-site-1.png);"></div>
    			</div>&nbsp;KNX</a>
    	<ul class="navigation_submenu-1">
    		<li id="menu-item-1724" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1724"><a href="https://my.site.ru/knx/actuators">Актуаторы</a></li>
    		<li id="menu-item-1725" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1725"><a href="https://my.site.ru/knx/jalousie">Жалюзи</a></li>
    		<li id="menu-item-1726" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1726"><a href="https://my.site.ru/knx/heating">Отопление</a></li>
    		<li id="menu-item-1727" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1727"><a href="https://my.site.ru/knx/button">Модули входов/выходов</a></li>
    		<li id="menu-item-1728" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1728"><a href="https://my.site.ru/knx/system">Системные устройства</a></li>
    		<li id="menu-item-1729" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-1729"><a href="https://my.site.ru/knx/accessories">Аксессуары</a></li>
    	</ul>
    </li>
    	<li id="menu-item-59" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-59"><a href="https://my.site.ru/modbus"><div class="submenu__icon">
    				<div class="submenu__icon__img" style="background-image: url(https://my.site.ru/wp-content/uploads/2019/04/Modbus-site.png);"></div>
    			</div>&nbsp;Modbus</a>
    	<ul class="navigation_submenu-1">
    		<li id="menu-item-67" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-67"><a href="https://my.site.ru/modbus/input-output">Устройства ввода-вывода</a></li>
    		<li id="menu-item-361" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-361"><a href="https://my.site.ru/modbus/adds">Системные устройства</a></li>
    	</ul>
    </li>
    	<li id="menu-item-63" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-63"><a href="https://my.site.ru/smart"><div class="submenu__icon">
    				<div class="submenu__icon__img" style="background-image: url(https://my.site.ru/wp-content/uploads/2019/04/Smart-site-1.png);"></div>
    			</div>&nbsp;Smart</a>
    	<ul class="navigation_submenu-1">
    		<li id="menu-item-182" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-182"><a href="https://my.site.ru/smart/climate">Климат</a></li>
    		<li id="menu-item-183" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-183"><a href="https://my.site.ru/smart/light">Свет</a></li>
    		<li id="menu-item-184" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-184"><a href="https://my.site.ru/smart/curtains">Шторы</a></li>
    		<li id="menu-item-223" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-223"><a href="https://my.site.ru/smart/accounting">Учёт</a></li>
    	</ul>
    </li>
    </ul>
    </li>
    <li id="menu-item-103" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-103"><a href="https://my.site.ru/news">Новости</a></li>
    <li id="menu-item-76" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-76"><a href="https://my.site.ru/buy.html">Где купить?</a></li>
    <li id="menu-item-423" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-423"><a href="https://my.site.ru/documents">Документы</a></li>
    <li id="menu-item-23" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-23"><a href="https://my.site.ru/contacts.html">Контакты</a></li>
    <li id="menu-item-1160" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1160"><a href="https://my.site.ru/forum.html">Форум</a></li>
    </ul>
    Ответ написан
    Комментировать
  • Как понять внутри цикла WordPress и снаружи цикла?

    @Aricus
    Если быть точнее, цикл внутри while, после the_post(); Этот the_post и образует цикл wp извлечения постов.
    Ответ написан
  • Можно ли, и если да, то как сделать такие массовые изменения в бд? Запросами или регулярками в дампе? Скриптом?

    @Aricus
    На mysql подобное сделать сложно, если вообще возможно. Я бы на PHP делал, на отдельной странице, даже без подключения WP. Например, извлекаете из БД посты, начинающиеся с <img . Далее в PHP в цикле делаете то, что нужно, и изменяете посты запросом. Обязательно перед этим сделайте резервную копию, так как пойти не так может очень многое.
    Ответ написан
    Комментировать
  • Почему не открывается основная страница?

    @Aricus
    Если я правильно понял, вы просто перенесли файлы по FTP или панель управления хостингом с поддомена на домен? Типа, раз база данных уже есть, то всё в порядке. Однако, у WP есть привязка к url сайта в куче мест в БД. Так что переносить сайт стоит только с помощью специальных плагинов. Если один не сработал, можно попробовать другой.
    Ответ написан
  • Как вывести изображение из произвольного поля?

    @Aricus
    $bigImg = get_field('post-bigimg', get_the_ID()); ?>
    <img src="<?=$bigImg['url']?>">
    Ответ написан
  • Как установить плагины Wordpress на сайт?

    @Aricus
    # Шорткоды можно использовать или в самом Wordpress: странице или статье, или в теме с помощью функции do_shortcode()
    # Этот вопрос я не понял. Про шаблоны страниц хорошо написано в этой статье.
    Ответ написан
  • Как в цикле WordPrees правильно сгруппировать элементы?

    @Aricus
    <div class="block">
    Вот у вас блок открывается, но не закрывается.
    Ответ написан
    Комментировать
  • Как правильно заменить префикс таблицы базы данных для wordpress?

    @Aricus
    Нужно изменить префикс в файле wp-config.php в корневой папке, и в самих названиях таблиц БД. Это имеет значение, если на одной БД стоит несколько сайтов на wordpress.
    Если club_ по каким-то причинам не ставится (может, есть какие-то другие таблицы, которые с ним конфликтуют), попробуйте что-то другое, например, club1_.
    Ответ написан
  • Почему Wp Ajax сбрасывает язык?

    @Aricus
    если переключить язык и отфильтровать записи

    Значит, эти данные не сохраняются. Сохранить данные при обновлении страницы можно или в get-параметрах, или в сессиях/куки (что используется на сайте). Далее нужно их достать оттуда и сделать значением по умолчанию при этих переключениях.
    Ответ написан
    Комментировать
  • Как вывести произвольное поле на странице товара, если его нет в наличии?

    @Aricus
    Если рассуждать логически, вы пишите перед добавлением в корзину. Если товара в наличии нет, добавки в корзину нет, и хук не отрабатывает. Нужно использовать какой-то другой хук.
    Ответ написан
  • Как удалить пользователя WordPress?

    @Aricus
    Вопрос в том, а стоит ли? Если на пользователя многое завязано, то при его удалении нужно что-то делать с этими зависимостями. Лучше изменить его статус на что-то вроде "Заблокирован".
    Ответ написан
    Комментировать
  • Как сделать слайдер блоков?

    @Aricus
    Конкретно там, судя по классам, используется Slick Slider. Я в таких случаях использую Owl Carousel, там тоже есть такой функционал. Про Elementor не скажу, не пользовался.
    Ответ написан
    Комментировать
  • Как исправить ошибку admin-ajax 400?

    @Aricus
    400 - bad request. Вероятно, неправильный url. Что в переменной ajaxurl? Если путь относительный, он должен быть относительно страницы, а не файла скрипта.
    Ответ написан
  • Как отправить многомерный массив данных через AJAX на чистом JS?

    @Aricus
    Если вы можете управлять данными на обоих концах, то можно просто их перекодировать в JSON. С ним работает и js, и php. Я так делаю, когда возникают подобные проблемы.
    Ответ написан
    Комментировать
  • Как добавить кнопку плагина в меню?

    @Aricus
    Проще всего вынести кнопку за пределы меню: прямо перед или после самого меню. Если же нужно, можно заморочиться с кастомным меню. WP позволяет сделать меню любого вида, но в нём непросто разобраться. Приведу пример из моего проекта.
    Это - в вёрстке:
    <div class="wrapper">
    						<?php wp_nav_menu( array(
    							'sort_column' => 'menu_order',
    							'theme_location' => 'primary-menu',
    							'container' => false,
    							'menu_class' => 'navigation_menu',
    							'walker' => new My_Walker_Nav_Menu()
    						) ); ?>
    					</div>

    Это - в functions.php, или включённом в него файле:
    // Главное меню
    class My_Walker_Nav_Menu extends Walker_Nav_Menu {
      function start_lvl(&$output, $depth = 1, $args = Array()) {
        $indent = str_repeat("\t", $depth);
        $output .= "\n$indent<ul class=\"navigation_submenu-".$depth."\">\n";
      }
    	public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
    		if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
    			$t = '';
    			$n = '';
    		} else {
    			$t = "\t";
    			$n = "\n";
    		}
    		$indent = ( $depth ) ? str_repeat( $t, $depth ) : '';
    
    		$classes = empty( $item->classes ) ? array() : (array) $item->classes;
    		$classes[] = 'menu-item-' . $item->ID;
    
    		$args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
    
    		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) );
    		$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
    
    		$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth );
    		$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
    
    		$output .= $indent . '<li' . $id . $class_names .'>';
    
    		$atts = array();
    		$atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';
    		$atts['target'] = ! empty( $item->target )     ? $item->target     : '';
    		$atts['rel']    = ! empty( $item->xfn )        ? $item->xfn        : '';
    		$atts['href']   = ! empty( $item->url )        ? $item->url        : '';
    
    		$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
    
    		$attributes = '';
    		foreach ( $atts as $attr => $value ) {
    			if ( ! empty( $value ) ) {
    				$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
    				$attributes .= ' ' . $attr . '="' . $value . '"';
    			}
    		}
    
    		$title = apply_filters( 'the_title', writeTitle($item->title), $item->ID );
    
    		$title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth );
    		
    		
    		if ($depth == 1) {
    			$writeIcon = '<div class="submenu__icon">
    				<div class="submenu__icon__img" style="background-image: url('.get_illImg($item->object_id)['url'].');"></div>
    			</div>&nbsp;';
    		} else {
    			$writeIcon = '';
    		}
    		$item_output = $args->before;
    		if (($depth == 1) && (get_field('activity', 'category_' .$item->object_id) == 'inactive')) {
    			$item_output .= '<div' .addTooltip($item->object_id). '>';
    			$item_output .= $writeIcon;
    			$item_output .= $title;
    			$item_output .= '</div>';
    		} else {
    			$item_output .= '<a'. $attributes .'' .addTooltip($item->object_id). '>';
    			$item_output .= $writeIcon;
    			$item_output .= $args->link_before . $title . $args->link_after;
    			$item_output .= '</a>';
    		}
    		$item_output .= $args->after;
    
    		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    	}
    	
    }
    Ответ написан
    Комментировать
  • Как изменить размер изображения на главной?

    @Aricus
    Причина в структуре. В первой картинке img добавляется напрямую, а в остальных - через picture. А width:100% - по отношению к родителю
    Исправить можно, добвавв в css шаблона:
    .wp-post-image {
        max-width: 250px;
    }

    Или как-то по-другому, если это некорректно повлияет на другие страницы.
    Ответ написан
  • Как получить количество записей из поля Relationship field (ACF)?

    @Aricus
    По идее, должно работать. Вот кусок рабочего кода из моего проекта:
    $solutions = get_field('solution', get_the_ID());
    foreach ($solutions as $solution): ?>
    	<div class="device_menu_block_elem"><a href="<?=$solution->guid?>" class="device_menu_link"><?=$solution->post_title?></a></div>
    <?php endforeach;

    Посмотрите, что у вас получается в
    var_dump(get_field('center', get_the_ID()));
    Думаю, по результатам будет понятно, в чём проблема.
    Ответ написан
    Комментировать