meta_key
запроса wp_query()
$posts = get_posts( array(
'post_type' => 'event',
'meta_key' => 'date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
));
pre_get_posts
add_action( 'pre_get_posts', 'pre_get_events', 1 );
function pre_get_events( $query ) {
if ( $query->is_post_type_archive( 'event' ) ) {
$query->set( 'meta_key', 'date' );
$query->set( 'orderby', 'meta_value_num' );
}
}
get_query_var()
проверяете наличие переменной и меняете основной запросadd_action( 'pre_get_posts', 'custom_pre_get_posts', 1 );
function custom_pre_get_posts( $query ) {
if ( $tag = get_query_var( 'tag', false ) ) {
$query->set( 'tag', $tag );
}
}
get_query_var()
проверять наличие переменной и подменять заголовок с описанием <body>
или менять переменную в псевдоклассе :root
is_tax()
// проверяем, что находимся в терминах audi и bmw таксономии product-category
is_tax ( 'product-category', array( 'audi', 'bmw' ) ) {
}
pre_get_posts
проверяете таксономию и гет-переменную и фильтруете записи для выводаadd_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $qvars ) {
$qvars[] = 'brand';
return $qvars;
}
add_query_arg()
$link = add_query_arg( [ 'brand' => 'rus' ], $cur_link );
get_query_var()
и отфильтровать по примеруadd_action( 'pre_get_posts', 'filter_pre_get_posts', 1 );
function filter_pre_get_posts( $query ) {
// Выходим, если это админ-панель или не основной запрос
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// Выбираем записи с GET запросами brand
if ( $query->is_tax( 'repair' ) && get_query_var( 'brand', false ) ) {
$tax_query = [];
$tax_query['tax_query'][] = [
'taxonomy' => 'brands',
'field' => 'slug',
'terms' => get_query_var( 'brand', false ),
];
$query->set( 'tax_query', $tax_query );
}
}
wp_query()
делаете выборку записей, собираете координаты в json по шаблону из документации и передаете скрипту карты на вывод $args = [
'post_type' => 'location',
'orderby' => 'name',
'order' => 'ASC',
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => $category->taxonomy,
'field' => 'id',
'terms' => $category->term_id
]
]
];
$locations = get_posts( $args );
switch_to_blog()
позволяет переключается на указанный блог в системе мультисайтов. После переключения, любые запросы wp_query()
, get_terms()
, get_users()
будут работать в рамках базы данных, на которую вы переключились// переключаемся на блог 1
switch_to_blog( 1 );
// задаем нужные нам критерии выборки данных из БД
$args = array(
'posts_per_page' => 5,
'post_type' => 'post',
'orderby' => 'comment_count'
);
$query = new WP_Query( $args );
// Цикл
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
echo '<h2>' . get_the_title() . '</h2>';
}
} else {
// Постов не найдено
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
// возвращемся к текущему блогу
restore_current_blog();
profile_update
или save_post
, чтобы сделать какие-то изменения на другом сайте в системе мультисайтов wp_get_nav_menu_object()
и вывести произвольным циклом. Получить можно по названию:$menu_name = 'Menu';
$nav_menu = wp_get_nav_menu_object( $menu_name );
if ( !$nav_menu ) {
$menu_id = wp_create_nav_menu( $menu_name );
} else {
$menu_id = $nav_menu->term_id;
}
// получаем элементы меню
$nav_menu_items = wp_get_nav_menu_items( $menu_id );
$menu_location = 'primary';
$locations = get_nav_menu_locations();
if ( isset( $locations[$menu_location] ) ) {
$nav_menu_items = wp_get_nav_menu_items( $locations[$menu_location] );
}
add_action( 'transition_post_status', function ( $new_status, $old_status, $post ) {
if ( in_array( $post->post_type, ['post', 'event'] ) && 'publish' === $new_status ) {
delete_transient( self::$cache_filed );
}
}, 10, 3 );
wp_add_inline_script()
. Пример:add_action( 'wp_enqueue_scripts', 'masonry_init_scripts' );
function masonry_init_scripts() {
wp_enqueue_script('masonry');
$masonry_init = 'jQuery(function($) {
var $container = $(".masonry-container");
$container.imagesLoaded( function() {
$container.masonry({
columnWidth: ".masonry-item",
itemSelector: ".masonry-item"
});
});
});';
wp_add_inline_script( 'masonry', $masonry_init );
}