$current = absint( max( 1, get_query_var( 'paged' ) ? get_query_var( 'paged' ) : get_query_var( 'page' ) ) );
$args = [
'post_type' => 'news',
'posts_per_page' => $posts_per_page,
'paged' => $current,
];
paginate_links()
echo wp_kses_post(
paginate_links(
[
'total' => $loop->max_num_pages, // количество берем из дефолтной опции запроса
'current' => $current, // текущая страница
]
)
);
paginate_links()
можете удалить, вызывать global $wp_query
не нужноwhile ( $loop->have_posts() ) {
# code...
}
echo wp_kses_post( paginate_links() );
query_vars
свою переменную add_filter( 'query_vars', 'add_query_vars' );
function add_query_vars( $qvars ) {
$qvars[] = 'partner';
return $qvars;
}
get_query_var()
if ( $query_var = get_query_var( 'partner' ) ) {
# code...
}
add_query_arg()
$url = add_query_arg( ['partner' => $user_id], home_url( '/' ) );
pre_get_posts
, где можно изменить параметры глобального запроса аргументом ignore_sticky_posts function wpz_scripts() {
wp_enqueue_script( 'ajax-events', get_theme_file_uri( 'dist/build/ajax-events.min.js' ), array( 'jquery' ), filemtime( get_theme_file_path( '/dist/build/ajax-events.min.js' ) ) );
wp_localize_script(
'ajax-events',
'ajax_events_obj',
array(
'url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'nonce-events' ) // Создаем nonce
)
);
}
add_action( 'wp_enqueue_scripts', 'wpz_scripts' );
paginate_links()
есть фильтр paginate_links_output
, можете попробовать распарсить регулярками итоговый htmlpaginate_links()
, посмотрите и скопируйте нужные запросы в свою функцию, а вывод верстки измените на свойpaginate_links()
именно в том и заключается чтобы получить и вывести ссылки. Уж не знаю, что по вашему должно происходить по кликам на кнопки и как WP должен понять какая ссылка следующая, а какая предыдущая, но вы хотя бы в дата-атрибуты их положите is_home()
— проверяет показывается ли страница с последними постамиget_theme_file_uri()
, которую редко используют из-за кучи старых гайдов. Она ищет файл сначала в дочерней теме, если его там нет, то берет его из основнойfilemtime()
. Это нужно, чтобы браузер не кешировал измененные файлы и всегда показывал только актуальную версиюis_page()
проверяю слаги постов. Но это уже вкусовщинаfunction custom_scripts_init() {
// общие стили
wp_enqueue_style( 'common-styles', get_theme_file_uri( 'assets/css/common.min.css' ) , array(), filemtime( get_theme_file_path( '/assets/css/common.min.css' ) ) );
// общие скрипты
wp_enqueue_script( 'common-scripts', get_theme_file_uri( 'assets/js/common.min.js' ), array( 'jquery' ), filemtime( get_theme_file_path( '/assets/js/common.min.js' ) ), true );
// скрипты для страницы постов
if ( is_home() ) {
wp_enqueue_script( 'home-scripts', get_theme_file_uri( 'assets/js/home.min.js' ), array( 'jquery' ), filemtime( get_theme_file_path( '/assets/js/home.min.js' ) ), true );
}
// скрипты для массива страниц
if ( is_page( ['sample-page', 'contacts'] ) ) {
wp_enqueue_script( 'page-scripts', get_theme_file_uri( 'assets/js/page.min.js' ), array( 'jquery' ), filemtime( get_theme_file_path( '/assets/js/page.min.js' ) ), true );
}
}
add_action( 'wp_enqueue_scripts', 'custom_scripts_init' );
wp_add_inline_script()
add_action( 'wp_enqueue_scripts', 'mainfeedscripts' );
function mainfeedscripts() {
wp_enqueue_script( 'pawsScript', get_template_directory_uri() . '/assets/js/pawsScript.js', array(), '2', true );
$pawsScriptInit = '
import {THE_ANIMATION_PAWS_MODULE} from ' . get_template_directory_uri() . '/assets/js/pawsScript.js
let Number_paws = 10
let Animation_Speed = 20
let Height_Animation = 2000
let mobile = "False"
let stateBodyHeight = "True"
THE_ANIMATION_PAWS_MODULE(Number_paws, Animation_Speed, Height_Animation, mobile, stateBodyHeight)
';
wp_add_inline_script( 'pawsScript', $pawsScriptInit );
}
$args = array(
'post_type' => 'product',
'posts_per_page' => 99,
'order' => 'DESC', // Display all post with thumbnail ID first
'orderby' => 'meta_value_num', // order by meta key value
'meta_query' => array( //query post based on meta key
array(
'relation' => 'OR', // add condition if meta key is exists or not
array(
'key' => '_thumbnail_id',
'compare' => 'NOT EXISTS' // include post without _thumbnail_id key
),
array(
'key' => '_thumbnail_id',
'compare' => '!NOT EXISTS' // include post with _thumbnail_id key
)
)
)
);
get_terms()
есть ключ parent, по которому можно проверить наличие родительской категории$categories = get_terms();
foreach ( $categories as $key => $category ) {
if ( $category->parent == 0 ) {
# нет родителя
} else {
# есть родитель
}
}
function is_category_parent( $cat_id ) {
$category = get_category( $cat_id );
if ( $category->parent == 0 ) {
return true;
}
return false;
}
if ( is_category_parent( $cat_id ) ) {
// категория имеет родителя
}
Walker_Nav_Menu()
wp_get_nav_menu_items()
и собрать простым циклом$menu_name = 'custom_menu_slug';
$locations = get_nav_menu_locations();
// получаем элементы меню
$menu_items = wp_get_nav_menu_items( $locations[ $menu_name ] );
// создаем список
echo '<ul id="menu-' . $menu_name . '">';
foreach ( (array) $menu_items as $key => $menu_item ){
echo '<li><a href="' . $menu_item->url . '">' . $menu_item->title . '</a></li>';
}
echo '</ul>';