有人知道如何使用自定义分类(“album\\u category”)将“所有帖子”按钮添加到我的自定义帖子(“albums”)中吗?我可以看到我的类别(混合、掌握、制作),当我单击它们时,它会显示在特定类别(混合、掌握、制作)下打勾的帖子。我想要的是还有一个“所有帖子”按钮,这样用户可以在查看过滤后的帖子后返回显示所有帖子。
我知道我可以用wp\\u list\\u类别(array(\'show\\u option\\u all\'=>“all Posts”))做到这一点;但我不知道如何在代码中实现它。
以下是我的完整代码:
我的相册页面。php
$args = array(
\'post_type\' => \'albums\',
\'posts_per_page\' => 10,
);
$query = new WP_Query( $args );
$tax = \'album_category\';
$terms = get_terms( $tax );
$count = count( $terms );
if ( $count > 0 ): ?>
<div class="post-tags">
<?php
foreach ( $terms as $term ) {
$term_link = get_term_link( $term, $tax );
echo \'<a href="\' . $term_link . \'" class="tax-filter" title="\' . $term->slug . \'">\' . $term->name . \'</a> \';
} ?>
</div>
<?php endif;
if ( $query->have_posts() ): ?>
<div class="tagged-posts">
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
<?php endwhile; ?>
</div>
<?php else: ?>
<div class="tagged-posts">
<h2>No posts found</h2>
</div>
<?php endif;
wp_reset_postdata(); ?>
</article>
我的职能。php:function ajax_filter_posts_scripts() {
// Enqueue script
wp_enqueue_script(\'jquery\');
wp_register_script(\'afp_script\', get_template_directory_uri() . \'/assets/src/js/ajax-filter-posts.js\', \'jquery\', null, true);
wp_enqueue_script(\'afp_script\');
wp_localize_script( \'afp_script\', \'afp_vars\', array(
\'afp_nonce\' => wp_create_nonce( \'afp_nonce\' ), // Create nonce which we later will use to verify AJAX request
\'afp_ajax_url\' => admin_url( \'admin-ajax.php\' ),
)
);
}
add_action(\'wp_enqueue_scripts\', \'ajax_filter_posts_scripts\', 100);
// Script for getting posts
function ajax_filter_get_posts( $taxonomy ) {
// Verify nonce
if( !isset( $_POST[\'afp_nonce\'] ) || !wp_verify_nonce( $_POST[\'afp_nonce\'], \'afp_nonce\' ) )
die(\'Permission denied\');
$taxonomy = $_POST[\'album_category\'];
// WP Query
$args = array(
\'taxonomy\' => $taxonomy,
\'post_type\' => \'albums\',
\'posts_per_page\' => 10,
);
// If taxonomy is not set, remove key from array and get all posts
if( !$taxonomy ) {
unset( $args[\'album_category\'] );
}
$query = new WP_Query( $args );
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
$output = \'<h2><a href="\'.get_permalink().\'">\'. get_the_title().\'</a></h2>\';
$output .= get_the_excerpt();
$result = \'success\';
endwhile; else:
$output = \'<h2>No posts found</h2>\';
$result = \'fail\';
endif;
$response = json_encode($output);
echo $response;
wp_reset_postdata();
die();
}
add_action(\'wp_ajax_filter_posts\', \'ajax_filter_get_posts\');
add_action(\'wp_ajax_nopriv_filter_posts\', \'ajax_filter_get_posts\');
我的ajax。js公司jQuery(document).ready(function($) {
$(\'.tax-filter\').click( function(event) {
// Prevent defualt action - opening tag page
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
// Get tag slug from title attirbute
var selecetd_taxonomy = $(this).attr(\'title\');
$(\'.tagged-posts\').fadeOut();
data = {
action: \'filter_posts\',
afp_nonce: afp_vars.afp_nonce,
taxonomy: selecetd_taxonomy,
};
$.ajax({
type: \'post\',
dataType: \'json\',
url: afp_vars.afp_ajax_url,
data: data,
success: function( data, textStatus, XMLHttpRequest ) {
$(\'.tagged-posts\').html( data );
$(\'.tagged-posts\').fadeIn();
console.log( textStatus );
console.log( XMLHttpRequest );
},
error: function( MLHttpRequest, textStatus, errorThrown ) {
console.log( MLHttpRequest );
console.log( textStatus );
console.log( errorThrown );
$(\'.tagged-posts\').html( \'No posts found\' );
$(\'.tagged-posts\').fadeIn();
}
})
});
});