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 );
}
pre_get_posts
add_action( 'pre_get_posts', 'pre_search_filter' );
function pre_search_filter( $query ){
if ( !is_admin() && $query->is_main_query() && $query->is_search ) {
$query->set( 'orderby', 'type' );
}
}
$term_id = 6;
if ( $terms = get_subterms_by_parent_id( $term_id ) ) {
array_push( $terms, $term_id );
} else {
$terms[] = $term_id;
}
if ( is_category( $terms ) ) {
// код...
}
function get_subterms_by_parent_id( $id, $taxonomy = 'category' ) {
$terms = get_terms( array(
'taxonomy' => $taxonomy,
'fields' => 'ids',
'hide_empty' => true,
'parent' => $id // or
//'child_of' => $id // to target not only direct children
) );
if ( !is_array( $terms ) ) {
return false;
}
return $terms;
}
woocommerce_widget_shopping_cart_buttons
— хук, который выводит кнопкиquery_vars
add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $qvars ) {
$qvars[] = 'tab';
return $qvars;
}
$url = add_query_arg( [ 'tab' => '2' ], home_url( '/' ) ); // Получится ссылка вида https://example.loc/?tab=2
get_query_var()
, при выводе проверяете его номер и присваиваете соответствующий класс$active_tab = get_query_var( 'tab', 1 );
$tabs = ['О компании', 'Услуги', 'Портфолио'];
foreach ( $tabs as $key => $tab ) {
if ( $key == $active_tab ) {
echo '<div class="tab active">';
} else {
echo '<div class="tab">';
}
}