本期教程为教大家如何自选子比主题分类页、标签页、专题页文章列表显示样式的教程
教程开始
首先,本教程涉及修改子比主题自带的文件,操作前请务必备份源代码,以及收藏本教程(子比主题更新会导致本功能失效,提前备份更新无忧)
先打开主题根目录下的functions.php
或者func.php
文件,推荐func.php
主题更新不会丢失代码
加入以下代码,拓展分类、标签、专题编辑页面增加列表样式选择
// 定义列表样式的选项
function zib_get_list_styles() {
return array(
'list_thumb' => __('列表图文模式', 'zci'),
'card' => __('卡片模式', 'zci'),
);
}
// 添加分类、标签、专题的列表样式选择字段
function zib_admin_add_term_list_style_field($taxonomy) {
$term_id = isset($_GET['tag_ID']) ? intval($_GET['tag_ID']) : 0;
$list_style = get_term_meta($term_id, 'list_style', true);
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="list_style"><?php _e('列表样式', 'zci'); ?></label></th>
<td>
<select name="list_style" id="list_style">
<?php foreach (zib_get_list_styles() as $value => $label): ?>
<option value="<?php echo esc_attr($value); ?>" <?php selected($list_style, $value); ?>>
<?php echo esc_html($label); ?>
</option>
<?php endforeach; ?>
</select>
<p class="description"><?php _e('选择该分类、标签或专题页面的文章列表样式。', 'zci'); ?></p>
</td>
</tr>
<?php
}
// 挂载到分类、标签、专题的编辑页面
add_action('category_edit_form_fields', 'zib_admin_add_term_list_style_field');
add_action('post_tag_edit_form_fields', 'zib_admin_add_term_list_style_field');
add_action('topics_edit_form_fields', 'zib_admin_add_term_list_style_field');
add_action('category_add_form_fields', 'zib_admin_add_term_list_style_field');
add_action('post_tag_add_form_fields', 'zib_admin_add_term_list_style_field');
add_action('topics_add_form_fields', 'zib_admin_add_term_list_style_field');
// 保存分类、标签、专题的列表样式选择
function zib_admin_save_term_list_style($term_id) {
if (isset($_POST['list_style'])) {
update_term_meta($term_id, 'list_style', sanitize_text_field($_POST['list_style']));
}
}
add_action('edited_category', 'zib_admin_save_term_list_style');
add_action('create_category', 'zib_admin_save_term_list_style');
add_action('edited_post_tag', 'zib_admin_save_term_list_style');
add_action('create_post_tag', 'zib_admin_save_term_list_style');
add_action('edited_topics', 'zib_admin_save_term_list_style');
add_action('create_topics', 'zib_admin_save_term_list_style');
然后修改子比主题列表函数,使其对特定分类、标签或专题页面列表样式的支持