要在 WordPress 后台自定义文章类型的分类目录下添加推荐功能,你可以使用 category_add_form_fields 和 category_edit_form_fields 钩子来添加一个新的复选框字段,并使用 created_category 和 edited_category 钩子在分类创建或更新时保存选定的值。
以下是示例代码:
// 添加复选框字段
function add_recommend_field() {
?>
<div class="form-field">
<label for="recommend"><input type="checkbox" name="recommend" id="recommend" value="1"> 设置为推荐</label>
</div>
<?php
}
add_action( 'category_add_form_fields', 'add_recommend_field' );
function edit_recommend_field( $term ) {
$recommend = get_term_meta( $term->term_id, 'recommend', true );
?>
<tr class="form-field">
<th scope="row"><label for="recommend"><input type="checkbox" name="recommend" id="recommend" value="1"<?php checked( $recommend, '1' ); ?>> 设置为推荐</label></th>
</tr>
<?php
}
add_action( 'category_edit_form_fields', 'edit_recommend_field' );
// 保存复选框字段的值
function save_recommend_field( $term_id ) {
if ( isset( $_POST['recommend'] ) ) {
update_term_meta( $term_id, 'recommend', '1' );
} else {
update_term_meta( $term_id, 'recommend', '' );
}
}
add_action( 'created_category', 'save_recommend_field' );
add_action( 'edited_category', 'save_recommend_field' );
要改成支持自定义文章类型下的分类把category_edit_form_fields中的category改成你的自定义分类名即可add_action( 'xxx_add_form_fields', 'add_recommend_field' );
在前台调用
<?php
// 获取已设置为推荐的分类
$recommended_categories = get_terms( array(
'taxonomy' => 'category',
'meta_key' => 'recommend',
'meta_value' => '1',
) );
// 输出已设置为推荐的分类列表
if ( ! empty( $recommended_categories ) ) {
echo '<ul>';
foreach ( $recommended_categories as $category ) {
$recommend = get_term_meta( $category->term_id, 'recommend', true );
if ( $recommend === '1' ) {
echo '<li><a href="' . get_term_link( $category ) . '">' . $category->name . '</a></li>';
}
}
echo '</ul>';
}
?>
自定义分类目录
add_action( 'circle_category_add_form_fields', 'add_featured_field', 10, 2 );
add_action( 'circle_category_edit_form_fields', 'edit_featured_field', 10, 2 );
add_action( 'edited_circle_category', 'save_featured_field', 10, 2 );
add_action( 'create_circle_category', 'save_featured_field', 10, 2 );
function add_featured_field( $taxonomy ) {
?>
<div class="form-field term-group">
<label for="recommend">
<input type="checkbox" name="recommend" id="recommend" value="1">
<?php _e('Set as featured', 'textdomain'); ?>
</label>
</div>
<?php
}
function edit_featured_field( $term, $taxonomy ) {
$recommend = get_term_meta( $term->term_id, 'recommend', true );
?>
<tr class="form-field term-group-wrap">
<th scope="row">
<label for="recommend"><?php _e( 'Set as featured', 'textdomain' ); ?></label>
</th>
<td>
<input type="checkbox" name="recommend" id="recommend" value="1" <?php checked( $recommend, '1' ); ?>>
</td>
</tr>
<?php
}
function save_featured_field( $term_id, $tt_id ) {
if ( isset( $_POST['recommend'] ) ) {
update_term_meta( $term_id, 'recommend', '1' );
} else {
delete_term_meta( $term_id, 'recommend' );
}
}
前端调用
<?php
// 定义get_terms函数的参数
$args = array(
'taxonomy' => 'circle_category',
'meta_key' => 'recommend',
'meta_value' => '1',
);
// 获取已设置为推荐的分类目录列表
$featured_terms = get_terms( $args );
// 循环遍历每个推荐分类
foreach ( $featured_terms as $term ) {
// 显示分类名称和链接
echo '<li><a href="' . get_term_link( $term ) . '">' . $term->name . '</a></li>';
}
?>