分类模板

2023-12-25 1次

class Select_Category_Template
{
    public function __construct()
    {
        add_filter('category_template', array($this, 'get_custom_category_template'));
        add_action('category_edit_form_fields', array($this, 'category_template_meta_box'));
        add_action('category_add_form_fields', array(&$this, 'category_template_meta_box'));
        add_action('created_category', array(&$this, 'save_category_template'));
        add_action('edited_category', array($this, 'save_category_template'));
        do_action('Custom_Category_Template_constructor', $this);
    }
    // 添加表单到分类编辑页面
    public function category_template_meta_box($tag)
    {
        if (is_object($tag)) {
            $t_id = $tag->term_id;
            $cat_meta = get_option("category_templates");
            $template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;
        }
        // $t_id = $tag->term_id;
        // $cat_meta = get_option("category_templates");
        // $template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;?>
        <tr class="form-field">
            <th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Template'); ?></label></th>
            <td>
                <select name="cat_template" id="cat_template">
                    <option value="default"><?php _e('默认模板'); ?></option>
                    <?php page_template_dropdown($template); ?>
                </select>
                <br/>
                <span style="display: block; margin: 10px 0 15px;" class="description"><?php _e('为此分类选择一个模板'); ?></span>
            </td>
        </tr>
    <?php
        do_action('Custom_Category_Template_ADD_FIELDS', $tag);
    }
    // 保存表单
    public function save_category_template($term_id)
    {
        if (isset($_POST['cat_template'])) {
            $cat_meta = get_option("category_templates");
            $cat_meta[$term_id] = $_POST['cat_template'];
            update_option("category_templates", $cat_meta);
            do_action('Custom_Category_Template_SAVE_FIELDS', $term_id);
        }
    }
    // 调用所有页面模板
    public function get_custom_category_template($category_template)
    {
        $cat_ID = absint(get_query_var('cat'));
        $cat_meta = get_option('category_templates');
        if (isset($cat_meta[$cat_ID]) && $cat_meta[$cat_ID] != 'default') {
            $temp = locate_template($cat_meta[$cat_ID]);
            if (!empty($temp)) {
                return apply_filters("Custom_Category_Template_found", $temp);
            }
        }
        return $category_template;
    }
}
$cat_template = new Select_Category_Template();