• Как правильно указать путь картинки?

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

    2. Можете сделать шорткод, куда будете передавать путь и alt, например [image path="/img/reviews/woman.png" alt="девушка с блокнотом"], а на выходе получать нужный вам html

    3. Можете включить поддержку php в редакторе, но это плохая практика и дыра в безопасности
    Ответ написан
    2 комментария
  • Как включить произвольные поля поля в админке вордпресс?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Можете использовать плагины ACF/Carbon fields
    Ответ написан
    6 комментариев
  • Как вывести посты относительно даты поля acf?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    А если вам нужно изменить сортировку на архивной странице, там где основной цикл уже установлен, можете использовать этот пример:

    add_action( 'pre_get_posts', 'skill_pre_get_posts', 1 );
    if ( ! function_exists( 'skill_pre_get_posts' ) ) {
    	function skill_pre_get_posts( $query ) {
    		// Выходим, если это админ-панель или не основной запрос
    		if( is_admin() || !$query->is_main_query() )
    			return;
    
    		if( $query->is_post_type_archive('event') ) {
    			$query->set( 'meta_key', 'date' );
    			$query->set( 'orderby', 'meta_value_num' );
    			$query->set( 'order', 'ASC' );
    		}
    
    	}
    }
    Ответ написан
    Комментировать
  • Как скопировать страницу с картинками на Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Еще вариант - получать контент по cURL, парсить любой библиотекой типо Simple HTML Dom Parser, инсертить нативными функциями wp_insert_post() и wp_insert_attachment()
    Ответ написан
    Комментировать
  • Как обновить кеш на сайте, в случае внесения новых изменений?

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Связи между таксономиями находятся в таблице wp_term_relationships
    Ответ написан
    Комментировать
  • Как правильно сделать счетчик постов на Wordpress?

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

    $objcount = get_posts( array(
    	'numberposts' => -1,
    	'post_type' => array( 'apartment', 'exclusive-objects' ),
    	'fields' => 'ids',
    	'meta_query' => array(
    		array(
    			'key' => 'realtor-id',
    			'value' => get_the_ID(),
    			'compare'	=> '='
    		)
    	)
    ) );
    
    echo count($objcount);


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

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Я бы на вашем месте поискал наставника самостоятельно. Здесь, на behance, в телеграм-чатах найдите несколько человек, чьи работы вам действительно нравятся и того уровня, которого вы хотите добиться и просто напишите им просьбу о помощи

    Да, кто-то вам ответит, что его/ее консультации платные, но в основном людям нравится, когда их считают экспертами и ценят мнение, поэтому, я уверен, что большинство вам поможет советом совершенно бесплатно

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

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Раз вопрос касается WordPress, то вам необходимо знать php и ориентироваться в шаблонах и нативных функциях WP
    Ответ написан
    Комментировать
  • Как создать несколько front-page в Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вы можете сделать несколько нужных вам опций в кастомайзере или acf, а во front-page простой условной логикой if () { ... } else { ... } выводить разный дизайн

    Или можете в корне темы создать несколько шаблонов вида {custom-page-template}.php, в комментариях должно быть указано название:

    <?php
    /*
    Template Name: Мой шаблон страницы
    */
    ?>


    Теперь его можно будет выбрать при редактировании страницы

    5faca37f2a0f2710187814.png
    Ответ написан
    Комментировать
  • Вывод записи из таксономии?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    'tax_query' — это обычный массив, вы можете добавлять в него значения в зависимости от существования переменных $_POST

    $args = [
    	'post_type' => 'goods',
    ];
    
    if ( !empty($_POST['color']) && !empty($_POST['category']) ) {
    	$args['tax_query'] = [
    		'relation' => 'AND',
    		[
    			'taxonomy' => 'color',
    			'field'    => 'slug',
    			'terms'    => $_POST['color']
    		],
    		[
    			'taxonomy' => 'category',
    			'field'    => 'slug',
    			'terms'    => $_POST['category']
    		]
    	];
    } elseif( !empty($_POST['color']) || !empty($_POST['category']) ) {
    	if ( !empty($_POST['color']) ) {
    		$args['tax_query'] = [
    			[
    				'taxonomy' => 'color',
    				'field'    => 'slug',
    				'terms'    => $_POST['color']
    			]
    		];
    	} else {
    		$args['tax_query'] = [
    			[
    				'taxonomy' => 'category',
    				'field'    => 'slug',
    				'terms'    => $_POST['category']
    			]
    		];
    	}
    }
    
    $query = new WP_Query( $args );


    Кстати, 'category' это зарезервированная таксономия для записей. Если вы пользуетесь woocommerce, то там таксономии называются 'product_cat'. Возможно поэтому ваш код и не работает
    Ответ написан
    2 комментария
  • Как добавить управление метатегом description в Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Поставьте seo-плагин (Yoast, Rank math, The SEO Framework, All in One SEO Pack)

    Или напишите свой вывод полей на хуке wp_head(), например, с помощью ACF или Carbon fields
    Ответ написан
  • Как получить слаг таксономии по ее ID?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Какой сложный у вас процесс)

    $term = get_term( $id, $taxonomy );
    $slug = $term->slug;
    Ответ написан
    3 комментария
  • Как в админке wordpress менять местами категории товаров перетаскиванием, если там много страниц категорий?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Настройки экрана -> Количество элементов на странице

    5fabc662c6892818906308.png
    Ответ написан
    Комментировать
  • Как вытянуть значение из тега html?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Используйте ->plaintext, чтобы получить только текст внутри тега. Если вам нужны изображения, то текста внутри тега img нет и чтобы получить ссылку на него используйте ->src. После обработки желательно сбрасывать переменные

    $html = file_get_html($file_path);
    
    // Find all paragraphs
    $paragraphs = $html->find( 'p' );
    foreach ( $paragraphs as $key => $paragraph ) {
    	var_dump($paragraph->plaintext);
    }
    
    // Find all images
    $images = $html->find( 'img' );
    foreach ( $images as $key => $image ) {
    	var_dump($image->src);
    }
    
    $html->clear();
    unset($html);


    А лучше почитайте документацию, там все есть
    Ответ написан
    Комментировать
  • Как скрыть блок если дочерних нету?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Попробуйте так

    $reserve = get_post_meta($post->ID, 'reserve', true);
    $sold_out = get_post_meta($post->ID, 'sold_out', true);
    
    if ( ($reserve != 'off') && ($sold_out != 'off') ) {
    	echo '<div class="prop-item-top-badge">';
    		if( $reserve == 'on' ) { 
    			echo '<div class="badge badge-reserve">' . __( "Reserve", "restate" ) . '</div>';
    		}
    		if( $sold_out == 'on' ) {
    			echo '<div class="badge badge-sold_out">' . __( "Sold out", "restate" ) . '</div>';
    		}
    	echo '</div>';
    }
    Ответ написан
    Комментировать
  • Градиент справа налево под углом?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Поменяйте цвета местами)

    background: linear-gradient(45deg, #000 90%, #f00 10%);
    Ответ написан
    2 комментария
  • Какую CMS выбрать для "магазина одного товара"?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Вы можете поискать в стоковом репозитории Внешний вид -> Темы. По тегу landing 170 тем, вполне реально выбрать что-то визуально подходящее и доработать в дочерней теме

    5fa9d6f6d252e990151179.jpeg
    Ответ написан
    Комментировать
  • Масовое редактирование записей (сайт на вордпрес)?

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

    // получаем все посты
    $my_posts = get_posts( array(
    	'numberposts' => -1,
    	'post_type'   => 'post',
    ) );
    
    
    foreach ( $my_posts as $key => $my_post ) {
    
    	// как-то обрабатываем контент, например, убираем регуляркой перечисленные символы
    	$content = preg_replace('/([\^\%]+)/', '', $my_post->post_content);
    
    	$post_data = array(
    		'ID'             => $my_post->ID,
    		'post_content'   => $content, 
    	);
    
    	// пушим контент обратно
    	$post_id = wp_update_post( wp_slash( $post_data ) );
    
    	// пишем ошибку/ успех
    	if( is_wp_error($post_id) ) {
    		var_dump( 'Ошибка обновления поста ' . $my_post->post_title . ': ' . $post_id->get_error_message() );
    	} else {
    		var_dump( 'Пост ' . $my_post->post_title . ' обновлен удачно!' );
    	}
    
    }


    Можете запустить функцию в functions.php или повесить на любой удобный вам хук. Учитывайте, что на хуке save_post создается бесконечный цикл, т.к. wp_update_post() сам по себе вызывает save_post и его нужно отключать
    Ответ написан
  • Как добавить noindex для постов из определенной категории Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Могу предложить вам решение не связанное с Rank Math или Yoast. Вы можете написать любые условия и вывести meta noindex на хуке wp_head

    add_action( 'wp_head', 'skill_noindex', 1 );
    if ( !function_exists( 'skill_noindex' ) ) {
    	function skill_noindex() {
    
    		// закрываем от индексации пустые архивные страницы (таксономии, категории, теги)
    		if( is_archive() && !have_posts() ) {
    			echo '<meta name="robots" content="noindex, nofollow, noarchive"/>';
    		}
    
    		// закрываем от индексации категорию "отзывы"
    		if ( is_category( 'testimonials' ) ) {
    			echo '<meta name="robots" content="noindex, nofollow, noarchive"/>';
    		}
    
    		// проверяем, что тип записи - post, но достаточно проверять is_single()
    		if ( get_post_type() === 'post' ) {
    			// получаем категории поста
    			if ( $categories = get_the_category( get_queried_object_id() ) ) {
    				foreach ( $categories as $key => $category ) {
    					// проверяем, что в массиве есть категория Новости
    					if ( $category->slug == 'news' ) {
    						echo '<meta name="robots" content="noindex, nofollow, noarchive"/>';
    					}
    				}
    			}
    		}
    
    	}
    }


    UPDATE

    С версии 5.7 для этого появился фильтр, пользоваться так:

    add_filter( 'wp_robots', 'skill_robots' );
    if ( !function_exists( 'skill_robots' ) ) {
      function skill_robots( $robots ) {
    
        if ( is_archive() && !have_posts() ) {
          $robots['noindex'] = true;
          $robots['nofollow'] = true;
        }
    
        $robots['max-snippet'] = '-1';
        $robots['max-image-preview'] = 'large';
        $robots['max-video-preview'] = '-1';
    
        return $robots;
      }
    }
    Ответ написан
    7 комментариев