나는 동위 원소 벽돌 레이아웃으로 WordPress의 다음 글 모음로드를 구현하지 못했습니다. 추가 된 요소에 대해 트리거되지 않았으므로 그 이유를 파악할 수 없습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 감사하겠습니다.Istotope ajax 콘텐츠로드
jQuery를 AJAX 기능
function load_content(args) {
$container = $('#container-async');
$status = $('.status');
$.ajax({
url: ajax_url,
data: {
action: 'do_load_posts',
nonce: nonce,
args: args
},
type: 'post',
dataType: 'json',
success: function(data, textStatus, XMLHttpRequest) {
$items = data.posts;
if (args.action === 'filter') {
/**
* Replace items
*/
$container.imagesLoaded(function() {
$container.isotope({
itemSelector: '.grid-item',
percentPosition: true,
masonry: {
columnWidth: '.grid-sizer'
}
});
$container.html($items).isotope('appended', $items, function() {
console.log('inserted');
});
});
}
else {
/**
* Append items
*/
$container.imagesLoaded(function() {
$container.isotope({
itemSelector: '.grid-item',
percentPosition: true,
masonry: {
columnWidth: '.grid-sizer'
}
});
$container.append($items).isotope('appended', $items, function() {
console.log('appended');
});
});
}
},
error: function(MLHttpRequest, textStatus, errorThrown) {
$status.toggleClass('active');
}
});
}
워드 프레스 AJAX :
function ajax_do_load_posts() {
// Verify nonce
if(!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'nonce'))
die('Permission denied');
$response = [
'status' => 500,
'posts' => 0,
];
$filter = $_POST['args'];
$type = get_post_type_object($filter['type']);
$args = [
'post_type' => sanitize_text_field($filter['type']),
'paged' => intval($filter['page']),
'posts_per_page' => $filter['qty'],
];
$qry = new WP_Query($args);
if ($qry->have_posts()) :
ob_start();
while($qry->have_posts()) : $qry->the_post(); ?>
<div class="grid-item col-xs-12 col-sm-6 col-md-4 col-lg-3">
<?php get_template_part('templates/loop', 'card'); ?>
</div>
<?php endwhile;
$response = [
'status' => 200,
'posts' => ob_get_clean(),
];
endif;
wp_reset_query();
wp_reset_postdata();
die(json_encode($response));
}
add_action('wp_ajax_do_load_posts', 'ajax_do_load_posts');
add_action('wp_ajax_nopriv_do_load_posts', 'ajax_do_load_posts');
항목 만 페이지로드에 이미있는 항목을 삽입하거나 컨테이너에 추가하지만 벽돌이 트리거됩니다.
나는 주위에 인터넷 검색 및 다양한 솔루션을 시도했지만 그들 중 누구도도 동위 원소 또는 벽돌 jQuery 플러그인으로 작동 없다.
당신은 이미 그것을 파악하지 않은 : 감소 된 테스트 케이스를 jsfiddle/jsbin에 많은 도움이 될 것이다. 특히 위의 코드가 불완전한 것 같아서 ... – MattDiMu
@MattDiMu 내 문제를 해결할 수있었습니다. 아래는 제 대답입니다. 위 코드는 불완전하지만 광산 레이아웃과 관련된 것들만 제거했습니다. – Bobz