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() );
}
}
$taxonomy = 'category';
$args = [
'taxonomy' => $taxonomy, // название таксономии с WP 4.5
'hide_empty' => false,
];
if ( $terms = get_terms( $args ) ) {
$output = array();
foreach ( $terms as $key => $term ) {
if ( $term->parent == 0 ) {
$output[$term->term_id]['parent']['title'] = $term->name;
$output[$term->term_id]['parent']['link'] = get_term_link( $term->term_id, $taxonomy );
} else {
$output[$term->parent]['children'][$key]['title'] = $term->name;
$output[$term->parent]['children'][$key]['link'] = get_term_link( $term->term_id, $taxonomy );
}
}
}
if ( isset( $output ) && is_array( $output ) && !empty( $output ) ) {
foreach ( $output as $key => $items ) {
echo '<h2 class="title"><a href="' . $items['parent']['link'] . '" class="title-link">' . $items['parent']['title'] . '</a></h2>';
if ( isset( $items['children'] ) ) {
echo '<ul class="list">';
foreach ( $items['children'] as $key => $item ) {
echo '<li class="list-item"><a href="' . $item['link'] . '" class="list-link">' . $item['title'] . '</a></li>';
}
echo '</ul>';
}
} // end foreach
} // end if
<ul>
можно вкладывать только элементы <li>
// Использование [tag-list field="метки_и_ссылки" class="tag-list"]
add_shortcode( 'tag-list', 'get_custom_tag_list' );
function get_custom_tag_list( $atts ) {
// белый список параметров и значения по умолчанию для шорткода
$atts = shortcode_atts( array(
'class' => 'list',
'field' => '',
'post_id' => 0
), $atts );
$output = '';
$post = get_post( $atts['post_id'] );
if ( isset( $post->ID ) && !empty($atts['field']) ) {
$tags = get_field_object( $atts['field'], $post->ID );
if ( $tags ) {
$output .= '<ul class="' . $atts['class'] . '">';
foreach ( $tags['value'] as $key => $value ) {
$output .= '<li class="' . $atts['class'] . '__item" >';
$output .= '<a class="' . $atts['class'] . '__link" href="' . $value->description . '" rel="tag">' . $value->name . '</a>';
$output .= '</li>';
}
$output .= '</ul>';
}
}
return apply_filters( 'get_custom_tag_list', $output );
}
update_user_meta()
добавляете тип тарифа, кол-во кредитов и дату, до которой он оплачен, если плагин этого не делает$cities = array(
'mos' => 'Москва',
'spb' => 'Санкт-Петербург',
'nsk' => 'Новосибирск',
'ekb' => 'Екатеринбург',
);
$pathinfo = pathinfo(home_url());
$network_id = get_current_network_id();
$user_id = get_current_user_id();
foreach ( $cities as $key => $city ) {
$site_data = array(
'domain' => $key .'.' . $pathinfo['basename'],
'path' => '/',
'network_id' => $network_id,
'user_id' => $user_id,
'title' => 'Заголовок сайта ' . $city,
'options' => [
'blogdescription' => 'Описание сайта ' . $city,
'permalink_structure' => '/%category%/%postname%/',
'template' => 'twentytwenty',
'stylesheet' => 'twentytwenty',
'posts_per_page' => '12',
'active_plugins' => [
'cyr2lat/cyr-to-lat.php',
'query-monitor/query-monitor.php',
'wordpress-seo/wp-seo.php',
'wp-fastest-cache/wpFastestCache.php'
]
]
);
// вставляем сайт в базу данных
$site_id = wp_insert_site( $site_data );
// пишем ошибку/успех
if( is_wp_error( $site_id ) ) {
var_dump( 'Ошибка инсерта мультисайта ' . $key . ': ' . $site_id->get_error_message() );
} else {
var_dump( 'Мультисайт ' . $key . ' опубликован удачно!' );
}
} // end foreach $cities
// задаем нужные нам критерии выборки данных из БД
$args = array(
'posts_per_page' => 5,
'post_type' => 'product',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'сhristmas'
)
)
);
$query = new WP_Query( $args );
// Цикл
if ( $query->have_posts() ) {
echo '<ul class="slider">';
while ( $query->have_posts() ) {
$query->the_post();
echo '<li class="slider__item">' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// Постов не найдено
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
wp_enqueue_script()
, стили - wp_enqueue_style()
$(document).ready(function(){
$('.slider').slick({
setting-name: setting-value
});
});
wp_add_inline_script()
на зависимость от основного slick-скрипта function get_seo_instead_title() {
if ( is_single() ) {
if ( get_post_type() === 'route' ) {
$roads_subtype = get_post_meta(get_the_ID(), 'subtype', true );
if ( $roads_subtype == 'bus' ) {
return 'Расписание автобусов ' . get_the_title();
} else {
return 'Расписание маршрутов ' . get_the_title();
}
}
}
}
function get_seo_before_title() {
if ( is_tax() ) {
if ( is_tax( 'routes' ) ) {
return 'Справочник маршрутов города ';
}
}
}
function get_seo_after_title() {
if ( is_single() ) {
if ( get_post_type() === 'platform' ) {
return ' — маршруты и расписание транспорта';
}
}
}
// %%BeforeTitle%% %%title%% %%AfterTitle%%
// %%BeforeTitle%% %%term_title%% %%AfterTitle%%
// define the action for register yoast_variable replacments
function register_custom_yoast_variables() {
wpseo_register_var_replacement( '%%BeforeTitle%%', 'get_seo_before_title', 'advanced', 'Some before title text' );
wpseo_register_var_replacement( '%%AfterTitle%%', 'get_seo_after_title', 'advanced', 'Some after title text' );
wpseo_register_var_replacement( '%%InsteadTitle%%', 'get_seo_instead_title', 'advanced', 'Some instead title text' );
}
// Add action
add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');
get_the_ID()
, get_the_title()
, get_post_meta()
и т.д. Общие шаблоны находятся в соседних вкладках того скриншота, который вы показываете - Типы содержимого и Таксономии