if ( get_post_type() === 'post' ) {
# code...
}
if ( is_category( [ 'news', 'projects' ] ) || ( is_singular( 'post' ) && has_category( [ 'news', 'projects' ] ) ) ) {
# code...
}
WP_Query()
the_posts_pagination()
или the_posts_navigation()
pre_get_posts
, на нем по нужным условиям можно отфильтровать основной запрос:add_action( 'pre_get_posts', 'set_products_current_user', 1 );
function set_products_current_user( $query ) {
// Выходим, если это админ-панель или не основной запрос
if( is_admin() || ! $query->is_main_query() )
return;
// Устанавливаем текущего юзера, если это запрос товаров
if ( $query->get( 'post_type' ) == 'product' ) {
$query->set( 'author', get_current_user_id() );
}
}
%%InsteadTitle%%
и %%InsteadDescription%%
// Заголовки
function get_seo_instead_title() {
$string = '';
if ( is_archive() ) {
// берем сео-заголовки из excel-таблицы
}
if ( is_single() ) {
// собираем сео-заголовки из get_the_title() и get_post_meta()
}
if ( $string == '' ) {
if ( is_home() || is_front_page() ) {
$string = get_bloginfo( 'name' ) . ' — ' . get_bloginfo( 'description' );
} elseif ( is_post_type_archive() ) {
$string = get_queried_object()->label;
} elseif ( is_archive() ) {
$string = get_queried_object()->name;
} else {
$string = get_the_title();
}
}
return $string;
}
// Описания
function get_seo_instead_description() {
$string = '';
if ( is_single() ) $string = get_the_excerpt();
if ( $string == '' ) {
$string = 'Какое-то дефолтное описание для всех страниц, если его нет';
}
return $string;
}
// Регистрируем переменные
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%InsteadTitle%%', 'get_seo_instead_title', 'advanced', 'Some instead title text' );
wpseo_register_var_replacement( '%%InsteadDescription%%', 'get_seo_instead_description', 'advanced', 'Some instead title text' );
}
// Add action
add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');
the_excerpt()
выводит отрывок, get_the_excerpt()
получает для обработки. Плюс там есть несколько фильтров<article>
есть функция post_class()
, то можно добавить класс через фильтр// добавляем классы для мероприятий
add_filter( 'post_class', 'add_post_classes' );
function add_post_classes( $classes ) {
if ( get_post_type() === 'event' ) {
$classes[] = 'article-event';
}
return array_unique( $classes );
}
update_post_meta()
или плагины типо ACF, большие таблицы в WordPress редактировать не удобноget_the_category()
не будет работать потому что у вас не категории, а кастомные таксономии. Используйте get_the_terms()
$cur_terms = get_the_terms( get_the_ID(), 'super_grill_recipes_categories' );
if( is_array( $cur_terms ) ) {
echo '<ul class="term-list">';
foreach( $cur_terms as $cur_term ){
echo '<li class="term-list__item">';
echo '<a class="term-list__link" href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>';
echo '</li>';
}
echo '</ul>';
}
if ( is_plugin_active( 'polylang/polylang.php' ) ) {
$sale = pll__( 'Скидка' );
} else {
$sale = esc_html__( 'Sale!', 'woocommerce' );
}
echo apply_filters( 'woocommerce_sale_flash', '<span class="onsale">' . $sale . '</span>', $post, $product );
wp_enqueue_scripts
, а не wp_enqueue_script
get_theme_file_uri()
, которая проверяет наличие файла перед подключением, это довольно удобноfilemtime()
add_action( 'wp_enqueue_scripts', 'my_scripts_slider' );
function my_scripts_slider() {
wp_enqueue_script( 'chifslider1', get_theme_file_uri( 'chifslider/chief-slider.dev.js' ), array(), filemtime( get_theme_file_path( '/chifslider/chief-slider.dev.js' ) ) );
wp_enqueue_script( 'chifslider2', get_theme_file_uri( 'chifslider/chief-int.js' ), array(), filemtime( get_theme_file_path( '/chifslider/chief-int.js' ) ) );
};
wp_robots()
. Yoast, с помощью фильтра может добавлять в нее свои теги. Это правильный способ работы с мета-тегом robots. Если у вас их два, то нужно удалять не его, а искать второйwp_robots
. Например, код ниже добавит noindex на архивные страницы на которых нет постовadd_filter( 'wp_robots', 'custom_wp_robots' );
function custom_wp_robots( $robots ) {
if ( is_archive() && !have_posts() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
}
wp_mobile()
нет, есть wp_is_mobile()