Wordpress教程 2023年03月4日
0 收藏 0 点赞 641 浏览 1970 个字

下面是一个详细的WordPress文章筛选应用实例代码,实现了多条件多重字段筛选功能,供参考:

  1. 在主题的functions.php文件中添加以下代码,创建文章筛选表单并处理用户提交的筛选条件:

/**
* 添加文章筛选表单
*/
function custom_filter_form() {
?>
<form action="<?php echo esc_url(home_url('/')); ?>" method="get">
<div class="filter-item">
<label for="author">作者:</label>
<input type="text" name="author" id="author" value="<?php echo isset($_GET['author']) ? esc_attr($_GET['author']) : ''; ?>">
</div>
<div class="filter-item">
<label for="category">分类:</label>
<?php wp_dropdown_categories(array('name' => 'category', 'selected' => isset($_GET['category']) ? $_GET['category'] : '')); ?>
</div>
<div class="filter-item">
<label for="tag">标签:</label>
<?php wp_dropdown_categories(array('taxonomy' => 'post_tag', 'name' => 'tag', 'selected' => isset($_GET['tag']) ? $_GET['tag'] : '')); ?>
</div>
<div class="filter-item">
<label for="year">年份:</label>
<select name="year" id="year">
<option value="">全部</option>
<?php
$years = get_years_with_posts(); // 获取有文章的年份列表
foreach ($years as $year) {
printf('<option value="%s" %s>%s</option>', $year, isset($_GET['year']) && $_GET['year'] == $year ? 'selected' : '', $year);
}
?>
</select>
</div>
<div class="filter-item">
<button type="submit">筛选</button>
</div>
</form>
<?php
}

/**
* 获取有文章的年份列表
*/
function get_years_with_posts() {
global $wpdb;
$years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date DESC");
return $years;
}

  1. 在主题的archive.php或index.php文件中,在文章循环之前添加以下代码:

<?php
if (isset($_GET['author']) || isset($_GET['category']) || isset($_GET['tag']) || isset($_GET['year'])) {
$args = array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
'author_name' => isset($_GET['author']) ? sanitize_text_field($_GET['author']) : '',
'category_name' => isset($_GET['category']) ? sanitize_text_field($_GET['category']) : '',
'tag' => isset($_GET['tag']) ? sanitize_text_field($_GET['tag']) : '',
'date_query' => array(
array(
'year' => isset($_GET['year']) ? intval($_GET['year']) : ''
)
)
);
$query = new WP_Query($args);
} else {
$query = $wp_query;
}
?>

上述代码通过检查$_GET数组是否存在特定的筛选条件,构建了一个WP_Query对象,用于获取符合条件的。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.mizhanw.com/blog/1807.html

相关推荐
codestar-framework结合Polylang插件制作多语言网站教程
下面是结合 codestar-framework 和 Polylang 插件制作多语言网站的详细代码: 首先,你需要在主题的 functio…
日期:2023-03-07 点赞:0 阅读:276
实现WordPress站点之间的跨站点数据传输和订单信息共享
实现了一个 WordPress 插件,使得当客户在 B1 站点上完成订单支付后,会自动跳转到 B2 站点进行支付。 为了使用这个插件,您需要…
日期:2023-03-05 点赞:0 阅读:737
WordPress特定分类板块文章做成一个API接口提供其他站点调用的实例代码
以下是一个示例代码,用于将WordPress中的特定分类下的文章转换成API接口,以便其他站点可以调用: // 注册API接口路由 add_…
日期:2023-03-05 点赞:0 阅读:424 10
文章同步发布到多个 WordPress 站点教程
要实现WordPress发布到多站点同步文章,有两种常用的方法: 使用WordPress插件 有很多WordPress插件可以帮助你同步文章…
日期:2023-03-05 点赞:0 阅读:387
WordPress主题添加域名授权方法+实例代码
在WordPress主题中添加域名授权的方法可以通过以下步骤实现: 创建一个配置页面,在该页面中添加一个域名授权字段。可以使用WordPre…
日期:2023-03-05 点赞:0 阅读:860
wp主题实现分类目录 二级域名绑定 实例代码
实现分类目录和二级域名绑定需要使用 WordPress 的多站点功能(Multisite)。以下是一个基本的步骤和示例代码来实现这个功能: …
日期:2023-03-05 点赞:0 阅读:744
发表评论
暂无评论

还没有评论呢,快来抢沙发~