if () { ... } else { ... }
выводить разный дизайн{custom-page-template}.php
, в комментариях должно быть указано название:<?php
/*
Template Name: Мой шаблон страницы
*/
?>
'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'
. Возможно поэтому ваш код и не работает 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 . ' обновлен удачно!' );
}
}
save_post
создается бесконечный цикл, т.к. wp_update_post()
сам по себе вызывает save_post
и его нужно отключать 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"/>';
}
}
}
}
}
}
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;
}
}
wp_head()
в теме вообще есть?init
, after_setup_theme
и сравнивайте с дефолтной темой if ( is_front_page() && is_home() ) {
$html = '<div class="site-branding">';
$html .= '<h1 class="site-branding__title">' . get_bloginfo( 'name' ) . '</h1>';
$html .= '<p class="site-branding__description">' . get_bloginfo( 'description') . '</p>';
$html .= '</div>';
} else {
$html = '<a class="site-branding" href="' . esc_url( home_url( '/' ) ) . '" rel="home">';
$html .= '<h1 class="site-branding__title">' . get_bloginfo( 'name' ) . '</h1>';
$html .= '<p class="site-branding__description">' . get_bloginfo( 'description') . '</p>';
$html .= '</a>';
}
echo apply_filters( 'get_site_branding', $html );
apply_filters()
, вы можете изменить вывод контента через дочернюю тему, написав соответствующий фильтрinit
, after_setup_theme
, фильтры контента, регулярки, может даже js