wp_insert_attachment()
, то можете передать ID поста, к которому нужно прикрепить запись третьим параметром $parent_post_idwp_insert_attachment( $attachment, $filename, $parent_post_id, $wp_error, $fire_after_hooks );
set_post_thumbnail()
, первым параметром передаете ID записи, вторым ID медиафайлаset_post_thumbnail( $post, $thumbnail_id );
scandir()
, которая получает список файлов и каталогов, расположенных по указанному пути. Получаете файлы в указанном каталоге, выводите в нужной вам разметке по примеру$directory_uri = get_stylesheet_directory_uri() . '/data/nft/';
$directory = get_stylesheet_directory() . '/data/nft/';
echo '<div class="masonry-container">';
echo '<div class="row no-gutters masonry-gallery popup-gallery">';
foreach ( scandir( $directory ) as $key => $file_name ) {
if ( ! in_array( $file_name, ['.', '..'] ) && file_exists( $directory . $file_name ) ) {
echo '<a href="' . $directory_uri . $file_name . '" class="col-12 col-sm-6 col-lg-4 col-xl-3 masonry-item" title="#">';
echo '<img src="' . $directory_uri . $file_name . '" class="masonry-image" alt="#"/>';
echo '</a>';
}
}
echo '</div>';
echo '</div>';
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
if ( in_array( $current_user->nickname, 'anubis', 'bast', 'ra', 'osiris' ) ) {
# code...
}
}
function user_has_role( $user_id, $role_name ) {
$user_meta = get_userdata( $user_id );
$user_roles = $user_meta->roles;
return in_array( $role_name, $user_roles );
}
if ( is_user_logged_in() && user_has_role( get_current_user_id(), 'student' ) ) {
# code...
}
robots_txt
. Управлять им можно следующим образом// Добавляем правила для файла robots.txt
add_filter( 'robots_txt', 'wpgen_robots_txt', 20, 2 );
function wpgen_robots_txt( $output, $public ) {
$output .= "Disallow: /wp-json\n";
return apply_filters( 'wpgen_robots_txt', $output, $public );
}
if ( is_single() && get_the_ID() === 12 ) {
// code...
}
// задаем нужные нам критерии выборки данных из БД
$args = array(
'posts_per_page' => 5,
);
$query = new WP_Query( $args );
$i = 1;
// Цикл
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
if ( $i === 1 ) {
// блок перед первым постом
}
// выводим контент постов
the_title();
$i++;
}
} else {
// постов не найдено
}
// возвращаем оригинальные данные поста. Сбрасываем $post
wp_reset_postdata();
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()
проверять наличие переменной и подменять заголовок с описанием 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 );