Ответы пользователя по тегу WordPress
  • Не подключается нужный файл архива, в чем может быть проблема?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Нужно вернуть 'has_archive' => true и пересохранить постоянные ссылки
    Ответ написан
    Комментировать
  • Как убрать стандартный title в Wordpress?

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

    if ( ! function_exists( 'pre_get_document_title_callback' ) ) {
    
    	/**
    	 * Function for `pre_get_document_title` filter-hook.
    	 * 
    	 * @param string $title The document title.
    	 *
    	 * @return string
    	 */
    	function pre_get_document_title_callback( $title ) {
    
    		if ( is_front_page() ) {
    			$title = 'Другой заголовок для главной';
    		}
    
    		return $title;
    	}
    }
    add_filter( 'pre_get_document_title', 'pre_get_document_title_callback' );
    Ответ написан
    Комментировать
  • Как вывести посты, свой тип записи нужной категории WordPress?

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

    <?php if ( have_posts() ) : ?>
    
    	<?php while ( have_posts() ) : ?>
    		<?php the_post(); ?>
    		<?php get_template_part( 'template-parts/content/content' ); ?>
    	<?php endwhile; ?>
    
    <?php else : ?>
    
    	<?php get_template_part( 'template-parts/content/content-none' ); ?>
    
    <?php endif; ?>
    Ответ написан
  • Как сделать перевод страницы типа записей, где выводятся все записи?

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

    __( 'Banner', 'domainname' );

    то перевод должен выводиться в зависимости от текущего языка независимо от polylang
    Ответ написан
    Комментировать
  • Как правильно создать категории на Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Я бы зарегистрировал кастомный post type human и две таксономии к нему city и activity

    Как-то так:

    if ( ! function_exists( 'init_register_post_types_callback' ) ) {
    
    	/**
    	 * Function for 'init` action-hook.
    	 * 
    	 * @return void
    	 */
    	function init_register_post_types_callback() {
    
    		register_taxonomy( 'city', array( 'human' ), array(
    			'labels'            => array(
    				'name'                       => _x( 'Cities', 'taxonomy general name', 'domainname' ),
    				'singular_name'              => _x( 'City', 'taxonomy singular name', 'domainname' ),
    				'search_items'               => __( 'Search city', 'domainname' ),
    				'popular_items'              => __( 'Popular cities', 'domainname' ),
    				'all_items'                  => __( 'All cities', 'domainname' ),
    				'parent_item'                => null,
    				'parent_item_colon'          => null,
    				'edit_item'                  => __( 'Edit city', 'domainname' ),
    				'update_item'                => __( 'Update city', 'domainname' ),
    				'add_new_item'               => __( 'Add new city', 'domainname' ),
    				'new_item_name'              => __( 'New city', 'domainname' ),
    				'separate_items_with_commas' => __( 'Separate city with commas', 'domainname' ),
    				'add_or_remove_items'        => __( 'Add or remove city', 'domainname' ),
    				'choose_from_most_used'      => __( 'Choose from the most used cities', 'domainname' ),
    				'menu_name'                  => __( 'Cities', 'domainname' ),
    			),
    			'public'             => true,
    			'show_in_nav_menus'  => false,
    			'show_in_rest'       => true,
    			'show_in_quick_edit' => true,
    			'sort'               => true,
    			'show_tagcloud'      => false,
    			'hierarchical'       => true,
    			'rewrite'            => array( 'slug' => 'city', 'hierarchical' => false, 'with_front' => false, 'feed' => false ),
    			'show_admin_column'  => true,
    		) );
    
    		register_taxonomy( 'activity', array( 'human' ), array(
    			'labels'             => array(
    				'name'              => _x( 'Activities', 'taxonomy general name', 'domainname' ),
    				'singular_name'     => _x( 'Activity', 'taxonomy singular name', 'domainname' ),
    				'search_items'      => __( 'Search activities', 'domainname' ),
    				'all_items'         => __( 'All activities', 'domainname' ),
    				'parent_item'       => __( 'Parent activities', 'domainname' ),
    				'parent_item_colon' => __( 'Parent activities:', 'domainname' ),
    				'edit_item'         => __( 'Edit activities', 'domainname' ),
    				'update_item'       => __( 'Update activities', 'domainname' ),
    				'add_new_item'      => __( 'Add new activities', 'domainname' ),
    				'new_item_name'     => __( 'New activities Name', 'domainname' ),
    				'menu_name'         => __( 'Activities', 'domainname' ),
    			),
    			'public'             => true,
    			'show_in_nav_menus'  => false,
    			'show_in_rest'       => true,
    			'show_in_quick_edit' => true,
    			'sort'               => true,
    			'show_tagcloud'      => false,
    			'hierarchical'       => true,
    			'rewrite'            => array( 'slug' => 'activity', 'hierarchical' => false, 'with_front' => false, 'feed' => false ),
    			'show_admin_column'  => true,
    		) );
    
    		register_post_type( 'human', array(
    			'labels'          => array(
    				'name'               => __( 'Humans', 'domainname' ),
    				'singular_name'      => __( 'Human', 'domainname' ),
    				'add_new'            => __( 'Add human', 'domainname' ),
    				'add_new_item'       => __( 'Add new human', 'domainname' ),
    				'edit_item'          => __( 'Edit human', 'domainname' ),
    				'new_item'           => __( 'New human', 'domainname' ),
    				'view_item'          => __( 'View human', 'domainname' ),
    				'search_items'       => __( 'Search human', 'domainname' ),
    				'not_found'          => __( 'Human not found', 'domainname' ),
    				'not_found_in_trash' => __( 'Human not found in trash', 'domainname' ),
    				'menu_name'          => __( 'Human', 'domainname' ),
    			),
    			'public'          => true,
    			'show_in_rest'    => true,
    			'capability_type' => 'post',
    			'hierarchical'    => false,
    			'has_archive'     => 'humans',
    			'rewrite'         => array( 'slug' => 'humans', 'with_front' => false, 'pages' => true, 'feeds' => false, 'feed' => false ),
    			'query_var'       => true,
    			'supports'        => array( 'page-attributes', 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments', 'custom-fields' ),
    			'taxonomies'      => array( 'activities' ),
    		) );
    	}
    }
    add_action( 'init', 'init_register_post_types_callback' );
    Ответ написан
    Комментировать
  • Как преобразовать часовой пояс wordpress для таблицы User?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    date_i18n( 'F j, G:i', strtotime( $register_date . "+ 3 hours" ) )
    Ответ написан
    Комментировать
  • Как перенести Wordpress-проект на локальный сервер для дальнейшей ре-верстки?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    В вашем случае проще всего сделать копию сайта с помощью плагина Duplicator

    Если по какой-то причине он вам не подходит, вам нужно зайти в phpmyadmin, создать новую базу, импортировать в нее копию дампа и подключить в файле wp-config.php по аналогии с другими проектами

    /** The name of the database for WordPress */
    define( 'DB_NAME', 'db_name' );
    
    /** Database username */
    define( 'DB_USER', 'root' );
    
    /** Database password */
    define( 'DB_PASSWORD', '' );
    
    /** Database hostname */
    define( 'DB_HOST', 'localhost' );


    В качестве альтернативы OS порекомендую использовать Laragon, некоторые вещи в нем делаются проще, например, новый сайт на WP можно создать в два клика
    Ответ написан
    Комментировать
  • Wordpress - плагин или дочерняя тема для безопасного редактирования JS, CSS?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Какой способ, по вашему опыту, лучше?

    Изменения лучше вносить в дочерней теме через SFTP
    Ответ написан
    Комментировать
  • Как сделать автоматический выбор региона по IP в Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Для яндекс карт есть определение местоположения по IP https://yandex.ru/dev/maps/jsbox/2.0/geolocation_ip
    Ответ написан
    Комментировать
  • Фатальная ошибка при отключении плагина Woocommerce на Wordpress. Как исправить?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Нужно проверять существование функции is_account_page() перед ее использованием, а лучше проверять активацию плагина is_plugin_active( 'woocommerce/woocommerce.php' ) или class_exists( 'WooCommerce' )
    Ответ написан
    4 комментария
  • Как поменять title на вордпессе?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Скорее всего это архив зарегистрированного типа записи и заголовок задается функцией register_post_type()

    Большинство SEO-плагинов умеют менять эти заголовки. Можете попробовать, например, Yoast
    Ответ написан
    Комментировать
  • Как вставить код в конкретное место страницы Вордпресса?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Нужно смотреть код конкретной темы, но общий принцип такой: в дочерней теме вы либо вешаете событие на нужный вам хук, либо заменяете весь шаблон single.php
    Ответ написан
    5 комментариев
  • Как задать в WordPress вид для типа записи с использованием присвоенной таксономии?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    1. Функция has_term() проверяет наличие у поста терминов

    if ( has_term( '', 'post_tag' ) ) {
    	echo 'У текущей записи есть метки';
    }
    
    if ( has_term( 'triller', 'video' ) ) {
    	echo 'Запись имеет термин triller в таксономии video';
    }


    2. В функцию регистрации типа записи register_post_type() можно передать параметр rewrite в котором описать правила ЧПУ для этого типа записи. Свои правила перезаписи ссылок добавляются на фильтре post_type_link
    Ответ написан
    Комментировать
  • Как сделать переменное слово в заголовках и контенте мультисайта WP?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Расскажу как это работает у меня. Есть большая excel-таблица со списком городов и их склонениями. В customizer сделан селект с выбором города из столбца title, парсится таблица с помощью библиотеки SimpleXLSX

    Выбранный город со всеми склонениями сохраняется в wp_options, шорткод [city type="gde"] выводит нужный падеж

    66007ebf0fe1c474335268.png
    Ответ написан
    Комментировать
  • Раздные заголовки и ссылки на 1 пост?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Без проблем, в the_permalink() передаете ID поста, заголовки пишите сколько влезет

    <a href="<?php the_permalink( 12 ); ?>">5 правил выращивания огурцов</a>
    <a href="<?php the_permalink( 12 ); ?>">5 условий которые влияют на хороший урожай огурцов</a>
    Ответ написан
  • Как сделать сам отрывок записи ссылкой в wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    if ( $post_content === 'excerpt' ) { ?>
    	<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_excerpt(); ?></a>
    <?php }
    Ответ написан
    Комментировать
  • Как добавить третье условие в коде?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    if ( is_front_page() && count( $posts ) > 0 && get_queried_object_id() === 320 ) {
    	// code...
    }
    Ответ написан
    Комментировать
  • Как добавить, изменить или удалить те или иные элементы относительно формата поста Wordpress?

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

    add_filter( 'excerpt_length', function() {
    
    	global $post;
    
    	$length = 55;
    
    	if ( get_post_format( $post->ID ) === 'image' ) {
    		$length = 10;
    	}
    
    	return $length;
    } );
    Ответ написан
    1 комментарий
  • Как отключить вывод стандартного метатега тайтл в wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Лучше использовать хук pre_get_document_title, который позволяет переопределить заголовок, а не полностью убить функцию

    if ( ! function_exists( 'pre_get_document_title_callback' ) ) {
    
    	/**
    	 * Function for 'pre_get_document_title' filter-hook.
    	 * 
    	 * @param string $title The document title.
    	 *
    	 * @return string
    	 */
    	function pre_get_document_title_callback( $title ) {
    
    		if ( is_home() || is_front_page() ) {
    			$title = get_field( 'home_page_title' );
    		}
    		if ( is_single() ) { 
    			$title = get_field( 'home_page_title' );
    		}
    		if ( is_category() ) { 
    			$title = get_field( 'home_page_title' );
    		}
    		if ( is_page( 16 ) ) {
    			$title = get_field( 'download_title' ); 
    		}
    		if ( is_page( 18 ) ) {
    			$title = get_field( 'faq_page_title' );
    		}
    
    		return $title;
    	}
    }
    add_filter( 'pre_get_document_title', 'pre_get_document_title_callback' );
    Ответ написан
    Комментировать
  • Как вывести записи текущего термина произвольной таксономии WordPress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Записи текущего термина произвольной таксономии уже находятся в global $wp_query->posts, вам не нужно создавать свой собственный экземпляр запроса WP_Query()
    Ответ написан
    Комментировать