if (window.jQuery) {
jQuery(function($){
$('#loadmore').click(function(){
let btn_load = $(this);
let load_list = $('#load_list');
let data = {
'action': action,
'query': true_posts,
'page' : current_page
};
btn_load.text('Загружаю...');
$.ajax({
url:ajaxurl, // обработчик
data:data, // данные
type:'POST', // тип запроса
success:function(data){
if(data) {
btn_load.text('Загрузить ещё');
load_list.append(data);
current_page++;
if (current_page == max_pages) btn_load.remove();
} else {
btn_load.remove();
}
}
});
});
});
}
add_action('wp_ajax_loadmore', 'load_more');
add_action('wp_ajax_nopriv_loadmore', 'load_more');
function load_more(){
$args = unserialize( stripslashes( $_POST['query'] ) );
$args['paged'] = $_POST['page'] + 1; // следующая страница
$args['post_status'] = 'publish';
query_posts( $args );
if( have_posts() ) {
while( have_posts() ): the_post();
switch ($args['post_type']) {
case 'news':
get_template_part( 'tpl/path/news/news-list-item', get_post_format() );
break;
}
endwhile;
}
die();
}
<?php
/**
* Template Name: Страница новостей
*/
get_header(); ?>
<?php query_posts([
'post_type' => 'news',
'post_status' => 'publish',
'posts_per_page' => 12,
'orderby' => 'date',
'order' => 'DESC',
]); ?>
<div id="load_list">
<?php if( have_posts() ){
while( have_posts() ){ the_post();
get_template_part( 'tpl/path/news/news-list-item', get_post_format() );
}
} ?>
</div>
<?php if ( $wp_query->max_num_pages > 1 ) : ?>
<script>
var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
var true_posts = '<?php echo serialize($wp_query->query_vars); ?>';
var current_page = <?php echo (get_query_var('paged')) ? get_query_var('paged') : 1; ?>;
var max_pages = '<?php echo $wp_query->max_num_pages; ?>';
var action = 'loadmore';
</script>
<div id="loadmore">Показать еще</div>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php get_footer(); ?>
register_nav_menus([
'top' => 'Верхнее',
]);
wp_nav_menu([
'theme_location' => 'top',
'container'=> false,
'menu_class' => 'nav ',
'menu_id' => '',
'fallback_cb' => false
]);
## Добавление стилей для стандартного меню
add_filter('nav_menu_css_class', 'add_menu_list_item_class', 1, 3);
function add_menu_list_item_class($classes, $item, $args) {
if (property_exists($args, 'li_class') && !$item->menu_item_parent) {
$classes[] = $args->li_class;
}
if (property_exists($args, 'li_child_class') && $item->menu_item_parent) {
$classes[] = $args->li_child_class;
}
return $classes;
}
add_filter( 'nav_menu_link_attributes', 'add_menu_link_class', 1, 3 );
function add_menu_link_class( $atts, $item, $args ) {
if ( strpos( $atts['href'], home_url() ) === false ) {
$atts['target'] = '_blank';
}
if (property_exists($args, 'a_class') && !$item->menu_item_parent) {
$atts['class'] = $args->a_class;
}
if (property_exists($args, 'a_child_class') && $item->menu_item_parent) {
$atts['class'] = $args->a_child_class;
}
return $atts;
}
add_filter( 'nav_menu_submenu_css_class', 'my_nav_menu_submenu_css_class', 1, 3);
function my_nav_menu_submenu_css_class($classes, $args, $depth) {
if (property_exists($args, 'ul_child_class')) {
$classes[] = $args->ul_child_class;
}
return $classes;
}
wp_nav_menu([
'theme_location' => 'bottom',
'container'=> false,
'menu_class' => '',
'menu_id' => '',
'fallback_cb' => false,
'a_class' => '',
'a_child_class' => '',
'li_class' => '',
'li_child_class' => '',
'ul_child_class' => '',
]);
'query_var' => true,
'has_archive' => true,
'show_in_rest' => true,
'rewrite' => [
'slug' => 'cases',
],