Ответы пользователя по тегу WordPress
  • Можно ли как то использовать шорткод cf7 в отдельной странице wordpress?

    @Aricus
    Лично для меня этот механизм довольно странный. Шорткоды, вообще-то, придуманы как раз для того, чтобы использовать их на страницах, так что хотя бы попробовать ничто не мешает. Напишите [cf7] в контенте страницы, а в теме выводите контент через
    <?=do_shortcode(get_post()->post_content)?>
    Ответ написан
  • Чем вызвана ошибка Failed to load resource: the server responded with a status of 500 (), при установке WP на хост?

    @Aricus
    У меня несколько раз было из-за ошибок в .htaccess , это наиболее вероятно. .htaccess для локального сервера не подходят для глобального. Но, в принципе, причины могут быть самые разные. Вот мой .htaccess с последнего работающего проекта на wordperss. Есть небольшой шанс, что он подойдёт и вам:
    RewriteEngine On
    RewriteCond %{ENV:HTTPS} !on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    php_flag log_errors on
    # BEGIN WordPress
    # Строки между `BEGIN WordPress` и `END WordPress` были созданы автоматически.
    # Они могут быть изменены только фильтрами WordPress.
    # Все изменения между этими отметками будут перезаписаны.
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]   
    </IfModule>
    
    # END WordPress
    
    php_value upload_max_filesize 50M
    php_value post_max_size 51M
    Ответ написан
    Комментировать
  • Как добавить в результаты поиска страницы, данные на которых выведены через WP_Query?

    @Aricus
    Изменить страницу поиска search.php, добавив до или после вывода результатов поиска точно такой же вывод, но по вашему запросу.
    Ответ написан
    Комментировать
  • Как вывести произвольные поля в wp_nav_menu?

    @Aricus
    Вам следует прописать сделать своё отображение меню (walker). Приведу пример из своего проекта, может, поможет разобраться. Мне в своё время было непросто.
    В header.php:
    <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 );
    	}
    	
    }
    Ответ написан
    Комментировать
  • Как сделать переход на single страницу?

    @Aricus
    Во-первых, код следует приводить не в скриншотах, а в специальных шорткодах (значок > на панели). Во-вторых, вам лучше разобраться в структуре файлов темы wordpress. Файл singlepost.php по идее вообще не должен использоваться движком wordpress, а использовать index.php для вывода контента - не лучшая идея, потому что это - последняя точка вывода для любой страницы, для которой не нашёлся более определённый файл. Подробнее здесь

    Чтобы получить доступ к статьям на любой странице (кроме категории этой статьи), вам следует их найти, и в цикле делать ссылки, или что вы хотите, примерно так (запрос WP_Query для поиска для вывода 3 последних новостей из одного моего проекта, прочитайте сами, чтобы вывести именно то, что вам нужно):
    <div class="main-news">
    	<?php
    	$pc = new WP_Query('cat=14&orderby=date&posts_per_page=3');
    	while ($pc->have_posts()) :
    		$pc->the_post();?>
    		<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    	<?php endwhile; ?>
    </div>
    Ответ написан
    Комментировать
  • Как выровнять карточки товаров woocommerce тема Astra?

    @Aricus
    Нужно подправить CSS. Если вы не умеете редактировать тему, в настройках темы wordpress есть возможность добавить свой CSS. Правильный ответ зависит от того, как реализована вёрстка в этой теме. Самый простой вариант - задать min-height для блока с названием, равным 2 строкам. Однако, если будет название в 3 строки, оно всё равно будет съезжать. Если проект выложен в интернет, дайте ссылку, и я смогу ответить точнее.
    Ответ написан
    3 комментария
  • Как вставить в страницу wordpress результат исполнения php скрипта?

    @Aricus
    Может, я не понял вопроса, но, вроде бы, стандартная задачка для ajax. Пишете обычную кнопку, а по клику на неё вызываете свой парсер. Об использовании ajax в wordpress можно почитать здесь.
    Ответ написан
    Комментировать
  • Как можно сделать выбор неисправностей для устройств?

    @Aricus
    При выборе через ajax подргружается список. Ссылки в конце зависят от предыдущих выборов. Вопрос сформулирован слишком обще. Если не понимаете что-то конкретное, уточните вопрос.
    Ответ написан
    Комментировать
  • Как вывести посты из определенной категории в WP не сломав при этом пагинацию страниц?

    @Aricus
    Перед have_post нужно сделать запрос, в котором указать нужную категорию. Гуглится элементарно.
    Ответ написан
    Комментировать
  • Как сделать вывод записей через шорткод с таблицей?

    @Aricus
    В functions.php напишите свою функцию парсинга. Вот пример из моего сайта, сделайте по аналогии.
    /* Исполняемый код php в статьях/страницах WordPress: [exec]код[/exec]
    ----------------------------------------------------------------- */
    function exec_php($matches) {
        eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
        return $inline_execute_output;
    }
    function inline_php($content) {
        $content = preg_replace_callback('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
        $content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
        return $content;
    }
    add_filter('the_content', 'inline_php', 0);
    Ответ написан
    Комментировать
  • На какие типы записей разбить сайт?

    @Aricus
    Ничто не мешает сделать новый тип записи. У меня почти аналогичная ситуация: есть товары, и есть решения. Страницы - корзина, контакты и т.д. Товары сделал стандартными записями. А для решений сделал новый тип:
    // Добавление типа записи "решения"
    function create_posttype_solution() {
        register_post_type( 'solution',
            array(
                'labels' => array(
                'name' => __( 'Решения' ),
                'singular_name' => __( 'Решение' )
            ),
            'public' => true,
            'menu_position' => 6,
            'has_archive' => true,
            'rewrite' => array('slug' => 'solution'),
            )
        );
    }
    add_action( 'init', 'create_posttype_solution' );

    Плюсы такого подхода в более структурированном меню админки и простоте настройки acf. Может, это у меня одного, на страницах acf не отображаются.
    Есть ещё тип данных для заказов, но это - уже другая история.
    Ответ написан
    Комментировать
  • Как отобразить пользовательский тип записи в меню административной панели?

    @Aricus Автор вопроса
    Вопрос был решён на другом форуме.
    Ответ написан
    Комментировать
  • Можно ли указать в хуке "walker_nav_menu_start_el" меню которое будем изменять? Как?

    @Aricus
    Во-первых, сам по себе этот код ничего не добавит: нужно ещё добавить фильтр. Во-вторых, наличие $args вас ни на какие размышления не наводит? Там и можно выбрать меню. Подробнее в документации.
    Ответ написан
    Комментировать
  • Как вывести все товары из главной категории и из ее дочерних?

    @Aricus
    Сначала получаете список подкатегорий через get_categories. Они обрабатываются циклом foreach. Внутри этого цикла запрашиваете товары через get_post и аналогично их выводите.
    Ответ написан
    Комментировать
  • Как вывести список подкатегорий в главной категории?

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

    @Aricus
    Осталось сделать всего один шаг - получить url. Гуглится всё с полпинка. Не проверял, но если есть ошибка, сами найдёте.
    $category_pars = get_term_by('id',get_queried_object()->parent,get_queried_object()->taxonomy);
    $category_link = get_category_link($category_pars->term_id);
    echo '<a href="'.$category_link.'">'.$category_pars->name.'</a>';
    Ответ написан
    2 комментария
  • Куда лучше помещать основной контент главной страницы WP?

    @Aricus
    По умолчанию контент уже берётся из front-page.php, и никаких костылей для этого не нужно. Подробнее в документации.
    Ответ написан
    Комментировать
  • .htaccess для wordpress - почему выдаёт ошибку 500?

    @Aricus Автор вопроса
    Проблема была в кодировке. Нужно сохранять в UTF-8 без BOM, а у меня было с BOM.
    Ответ написан
    Комментировать
  • Как проверить содержимое полей ACF и не выводить вкладку (tabs) если пусто?

    @Aricus
    if ($fieldValue = get_field('field-name', get_the_ID())) {
    	// Поле заполнено
    } else {
    	// Поле пустое
    }
    Ответ написан
  • Не могу изменить шаблон Wordpress. Как отредактировать его через html/css?

    @Aricus
    Может, не в той теме редактировали? Посмотрите, какая тема активна в панели (Внешний вид - темы). Папки с темами находятся в wp-content/themes/ . Также, возможно, включён плагин кеширования вроде WP Super Cache. Посмотрите в списке плагинов и деактивируйте, если найдёте плагин кеширования.
    Ответ написан
    Комментировать