{"id":4982,"date":"2026-01-26T17:00:24","date_gmt":"2026-01-26T09:00:24","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/wpcms\/bjjc\/4982.html"},"modified":"2026-01-29T15:29:33","modified_gmt":"2026-01-29T07:29:33","slug":"%e4%b8%bawordpress%e5%90%8e%e5%8f%b0%e7%9a%84%e5%88%86%e7%b1%bb%e6%b3%95%e7%ae%a1%e7%90%86%e9%a1%b5%e9%9d%a2%e6%b7%bb%e5%8a%a0%e8%87%aa%e5%ae%9a%e4%b9%89%e5%88%97%e7%9a%84%e6%96%b9%e6%b3%95","status":"publish","type":"bjjc","link":"https:\/\/www.zhaozhao123.cn\/wpcms\/bjjc\/4982.html","title":{"rendered":"\u4e3aWordPress\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\u7684\u65b9\u6cd5"},"content":{"rendered":"<p>WordPress\u672c\u8eab\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5b57\u6bb5\u53ef\u4ee5\u6ee1\u8db3\u6211\u4eec\u7684\u9700\u6c42\uff0c\u4f46\u662f\u5728\u7ba1\u7406\u65b9\u9762\u786e\u4f9d\u7136\u663e\u5f97\u6bd4\u8f83\u7e41\u7410\u3002\u672c\u6587\u63d0\u4f9b\u4e3aWordPress\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\u7684\u65b9\u6cd5\u5c06\u4e3a\u6211\u4eec\u4fbf\u4e8e\u7ba1\u7406\u548c\u67e5\u770b\u63d0\u4f9b\u4fbf\u5229\u3002<\/p><h2 class=\"wp-block-heading\">\u7b2c\u4e00\u6b65\uff1a\u6dfb\u52a0\u4f60\u7684\u81ea\u5b9a\u4e49\u5b57\u6bb5<\/h2><p>\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5b57\u6bb5\u7684\u5177\u4f53\u65b9\u6cd5\u8fd9\u91cc\u4e0d\u518d\u8d58\u8ff0\uff0c\u8be6\u60c5\u8bf7\u67e5\u770b\u672c\u7b14\u8bb0\u6559\u7a0b\u7684\u201c\u6dfb\u52a0\u5b57\u6bb5\u201d\u7bc7\u7ae0\u3002<\/p><p>\u8fd9\u91cc\u6211\u4eec\u76f4\u63a5\u4f7f\u7528SCF\u63d2\u4ef6\uff08\u5b89\u5168\u81ea\u5b9a\u4e49\u5b57\u6bb5\uff09\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5b57\u6bb5\uff0c\u4ee5\u4e0b\u662f\u5b9e\u73b0\u4ee3\u7801\uff1a<\/p><pre class=\"wp-block-code\"><code>\/**\u6838\u5fc3\u8bf4\u660e\uff1a\n * \u914d\u7f6e\uff1a\u5168\u5c40\u914d\u7f6e\n * \u9762\u5411\uff1a\u6240\u6709\u5206\u7c7b\u6cd5\u4e2d\u7684\u6240\u6709\u5206\u7c7b\n * \u76ee\u6807\uff1a\u521b\u5efa\u7edf\u4e00\u7684\u81ea\u5b9a\u4e49\u5b57\u6bb5\n * \u4ee3\u7801\uff1a\u7531scf\u63d2\u4ef6\u751f\u6210\n * \u4f9d\u8d56\uff1ascf\u63d2\u4ef6 \u6216 acf\u63d2\u4ef6\n * \u591a\u7ad9\uff1a\u652f\u6301\n * *\/\n\nadd_action( 'acf\/include_fields', function() {\n    if ( ! function_exists( 'acf_add_local_field_group' ) ) {\n        return;\n    }\n\n    acf_add_local_field_group( array(\n    'key' =&gt; 'group_68ba527d082ce',\n    'title' =&gt; '\u5168\u5c40\u914d\u7f6e-\u5168\u90e8\u5206\u7c7b-\u81ea\u5b9a\u4e49\u5b57\u6bb5',\n    'fields' =&gt; array(\n        array(\n            'key' =&gt; 'field_68ba5327b56c3',\n            'label' =&gt; '\u5c01\u9762\u5927\u56fe',\n            'name' =&gt; 'zzw_term_img_pc',\n            'aria-label' =&gt; '',\n            'type' =&gt; 'image',\n            'instructions' =&gt; '\u53ef\u72ec\u7acb\u4f7f\u7528\uff0c\u4e5f\u53ef\u7528\u4e8ePC\u7aef\u56fe\u7247\uff1b\u5b57\u6bb5\u503c\u4e3a\u56fe\u7247ID\uff0c\u7528\u4e8e\u6a21\u677f\u8c03\u53d6\uff08\u5b57\u6bb5\u540d\uff09\uff1azzw_term_img_pc',\n            'required' =&gt; 0,\n            'conditional_logic' =&gt; 0,\n            'wrapper' =&gt; array(\n                'width' =&gt; '100',\n                'class' =&gt; 'zzw-term-img-pc',\n                'id' =&gt; 'zzw-term-img-pc',\n            ),\n            'return_format' =&gt; 'id',\n            'library' =&gt; 'all',\n            'min_width' =&gt; '',\n            'min_height' =&gt; '',\n            'min_size' =&gt; '',\n            'max_width' =&gt; '',\n            'max_height' =&gt; '',\n            'max_size' =&gt; 1,\n            'mime_types' =&gt; '',\n            'allow_in_bindings' =&gt; 0,\n            'preview_size' =&gt; 'full',\n        ),\n        array(\n            'key' =&gt; 'field_68ba53d0b56c4',\n            'label' =&gt; '\u5c01\u9762\u5c0f\u56fe',\n            'name' =&gt; 'zzw_term_img_m',\n            'aria-label' =&gt; '',\n            'type' =&gt; 'image',\n            'instructions' =&gt; '\u53ef\u72ec\u7acb\u4f7f\u7528\uff0c\u4e5f\u53ef\u7528\u4e8e\u79fb\u52a8\u7aef\u56fe\u7247\uff1b\u5b57\u6bb5\u503c\u4e3a\u56fe\u7247ID\uff0c\u7528\u4e8e\u6a21\u677f\u8c03\u53d6\uff08\u5b57\u6bb5\u540d\uff09\uff1azzw_term_img_m',\n            'required' =&gt; 0,\n            'conditional_logic' =&gt; 0,\n            'wrapper' =&gt; array(\n                'width' =&gt; '100',\n                'class' =&gt; 'zzw-term-img-m',\n                'id' =&gt; 'zzw-term-img-m',\n            ),\n            'return_format' =&gt; 'id',\n            'library' =&gt; 'all',\n            'min_width' =&gt; '',\n            'min_height' =&gt; '',\n            'min_size' =&gt; '',\n            'max_width' =&gt; '',\n            'max_height' =&gt; '',\n            'max_size' =&gt; 1,\n            'mime_types' =&gt; '',\n            'allow_in_bindings' =&gt; 0,\n            'preview_size' =&gt; 'full',\n        ),\n        array(\n            'key' =&gt; 'field_68ba592b97c07',\n            'label' =&gt; '\u663e\u793a\u5230\u4e3b\u7ad9\u9996\u9875',\n            'name' =&gt; 'zzw_term_show_index',\n            'aria-label' =&gt; '',\n            'type' =&gt; 'checkbox',\n            'instructions' =&gt; '\u5b57\u6bb5\u503c\u4e3a\u9009\u9879\u503c\uff0c\u7528\u4e8e\u6a21\u677f\u8c03\u53d6\uff08\u5b57\u6bb5\u540d\uff09\uff1azzw_term_show_index \u3002\u201c\u4e09\u680f\u5757\u201d\u662f\u4e3b\u7ad9\u9996\u9875\u4e2d\u4e09\u680f\u90e8\u5206\u4e2d\u672c\u7ad9\u5757\u90e8\u5206\u4e2d\u7684\u63a8\u8350\u4f4d\u7f6e',\n            'required' =&gt; 0,\n            'conditional_logic' =&gt; 0,\n            'wrapper' =&gt; array(\n                'width' =&gt; '100',\n                'class' =&gt; 'zzw-term-show-index',\n                'id' =&gt; 'zzw-term-show-index',\n            ),\n            'choices' =&gt; array(\n                'indexfz' =&gt; '\u63a8\u81f3\u65b9\u9635\u5757',\n                'indexjn' =&gt; '\u63a8\u81f3\u80f6\u56ca\u5757',\n                'indexsl' =&gt; '\u63a8\u81f3\u4e09\u680f\u5757',\n            ),\n            'default_value' =&gt; array(\n            ),\n            'return_format' =&gt; 'value',\n            'allow_custom' =&gt; 0,\n            'allow_in_bindings' =&gt; 0,\n            'layout' =&gt; 'horizontal',\n            'toggle' =&gt; 0,\n            'save_custom' =&gt; 0,\n            'custom_choice_button_text' =&gt; '\u6dfb\u52a0\u65b0\u9009\u62e9',\n        ),\n    ),\n    'location' =&gt; array(\n        array(\n            array(\n                'param' =&gt; 'taxonomy',\n                'operator' =&gt; '==',\n                'value' =&gt; 'all',\n            ),\n        ),\n    ),\n    'menu_order' =&gt; 0,\n    'position' =&gt; 'acf_after_title',\n    'style' =&gt; 'default',\n    'label_placement' =&gt; 'top',\n    'instruction_placement' =&gt; 'label',\n    'hide_on_screen' =&gt; '',\n    'active' =&gt; true,\n    'description' =&gt; '\u5168\u5c40\u914d\u7f6e-\u4e3a\u5168\u90e8\u5206\u7c7b\u6cd5\u7684\u5168\u90e8\u5206\u7c7b\u6dfb\u52a0\u7edf\u4e00\u81ea\u5b9a\u4e49\u5b57\u6bb5',\n    'show_in_rest' =&gt; 1,\n) );\n} );<\/code><\/pre><blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u4ee5\u4e0a\u4ee3\u7801\u5b9e\u73b0\u6dfb\u52a0\u4e863\u4e2a\u81ea\u5b9a\u4e49\u5b57\u6bb5\uff1a<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>PC\u56fe\u7247<\/strong>\u00a0&#8211; \u663e\u793a\u5206\u7c7b\/\u6807\u7b7e\u7684PC\u7aef\u56fe\u7247<\/li>\n\n\n\n<li><strong>\u79fb\u52a8\u7aef\u56fe\u7247<\/strong>\u00a0&#8211; \u663e\u793a\u5206\u7c7b\/\u6807\u7b7e\u7684\u79fb\u52a8\u7aef\u56fe\u7247<\/li>\n\n\n\n<li><strong>\u9996\u9875\u5c55\u793a<\/strong>\u00a0&#8211; \u663e\u793a\u8be5\u5206\u7c7b\u662f\u5426\u5728\u9996\u9875\u7279\u5b9a\u533a\u5757\u4e2d\u5c55\u793a<\/li>\n<\/ol>\n<\/blockquote><h2 class=\"wp-block-heading\">\u7b2c\u4e8c\u6b65\uff1a\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217<\/h2><p>\u6211\u4eec\u5728\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\u65f6\uff0c\u8fd8\u9700\u8981\u5185\u5bb9\u3002\u7a7a\u5217\u662f\u6ca1\u6709\u4efb\u4f55\u610f\u4e49\u7684\u3002<\/p><p>\u6211\u4eec\u4ee5\u7b2c\u4e00\u6b65\u6dfb\u52a0\u76843\u4e2a\u81ea\u5b9a\u4e49\u5b57\u6bb5\u4e3e\u4f8b\uff0c\u5c06\u8fd93\u4e2a\u81ea\u5b9a\u4e49\u5b57\u6bb5\u6dfb\u52a0\u5230WordPress\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u76843\u4e2a\u81ea\u5b9a\u4e49\u5217\u4e2d\u3002<\/p><h3 class=\"wp-block-heading\">1. \u5217\u5b9a\u4e49\u51fd\u6570 <code>zzw_add_custom_taxonomy_columns()<\/code><\/h3><pre class=\"wp-block-code\"><code>function zzw_add_custom_taxonomy_columns( $columns ) {\n    $new_columns = array();\n    \n    \/\/ \u5728\u540d\u79f0\u5217\u4e4b\u540e\u6dfb\u52a0\u6211\u4eec\u7684\u81ea\u5b9a\u4e49\u5217\n    foreach ( $columns as $key =&gt; $value ) {\n        $new_columns[$key] = $value;\n        if ( $key === 'name' ) {\n            $new_columns['zzw_term_img_pc'] = __( 'PC\u56fe\u7247', 'textdomain' );\n            $new_columns['zzw_term_img_m'] = __( '\u79fb\u52a8\u7aef\u56fe\u7247', 'textdomain' );\n            $new_columns['zzw_term_show_index'] = __( '\u9996\u9875\u5c55\u793a', 'textdomain' );\n        }\n    }\n    \n    return $new_columns;\n}<\/code><\/pre><ul class=\"wp-block-list\">\n<li>\u5728&#8221;\u540d\u79f0&#8221;\u5217\u540e\u63d2\u5165\u4e09\u4e2a\u65b0\u5217<\/li>\n\n\n\n<li>\u4f7f\u7528WordPress\u7ffb\u8bd1\u51fd\u6570 <code>__()<\/code> \u652f\u6301\u591a\u8bed\u8a00<\/li>\n<\/ul><h3 class=\"wp-block-heading\">2. \u5217\u5185\u5bb9\u586b\u5145\u51fd\u6570 <code>zzw_fill_custom_taxonomy_columns()<\/code><\/h3><pre class=\"wp-block-code\"><code>function zzw_fill_custom_taxonomy_columns( $content, $column_name, $term_id ) {\n    switch ( $column_name ) {\n        case 'zzw_term_img_pc':\n            $image_id = get_term_meta( $term_id, 'zzw_term_img_pc', true );\n            if ( $image_id ) {\n                $url = wp_get_attachment_image_url($image_id,'full');\n                echo '&lt;a href=\"'.esc_url( $url ).'\" target=\"_blank\"&gt;';\n                echo wp_get_attachment_image( $image_id, 'full', false, array( 'style' =&gt; 'max-width:100px;max-height:60px;width:auto !important;height:auto !important;object-fit: contain;' ) );\n                echo '&lt;\/a&gt;';\n            } else {\n                echo '\u2014';\n            }\n            break;\n            \n        case 'zzw_term_img_m':\n            $image_id = get_term_meta( $term_id, 'zzw_term_img_m', true );\n            if ( $image_id ) {\n                $url = wp_get_attachment_image_url($image_id,'full');\n                echo '&lt;a href=\"'.esc_url( $url ).'\" target=\"_blank\"&gt;';\n                echo wp_get_attachment_image( $image_id, 'full', false, array( 'style' =&gt; 'max-width:100px;max-height:60px;width:100% !important;height:100% !important;object-fit: contain;' ) );\n                echo '&lt;\/a&gt;';\n            } else {\n                echo '\u2014';\n            }\n            break;\n            \n        case 'zzw_term_show_index':\n            $show_index = get_term_meta( $term_id, 'zzw_term_show_index', true );\n            if ( ! empty( $show_index ) ) {\n                $options = array();\n                if ( in_array( 'indexfz', $show_index ) ) {\n                    $options[] = '\u65b9\u9635\u5757';\n                }\n                if ( in_array( 'indexjn', $show_index ) ) {\n                    $options[] = '\u80f6\u56ca\u5757';\n                }\n                if ( in_array( 'indexsl', $show_index ) ) {\n                    $options[] = '\u4e09\u680f\u5757';\n                }\n                echo implode( ', ', $options );\n            } else {\n                echo '\u2014';\n            }\n            break;\n            \n        default:\n            break;\n    }\n}<\/code><\/pre><ul class=\"wp-block-list\">\n<li><strong>PC\u56fe\u7247\u5217<\/strong>\uff1a\u4ece\u672f\u8bed\u5143\u6570\u636e <code>zzw_term_img_pc<\/code> \u83b7\u53d6\u56fe\u7247ID\u5e76\u663e\u793a\u7f29\u7565\u56fe<\/li>\n\n\n\n<li><strong>\u79fb\u52a8\u7aef\u56fe\u7247\u5217<\/strong>\uff1a\u4ece\u672f\u8bed\u5143\u6570\u636e <code>zzw_term_img_m<\/code> \u83b7\u53d6\u56fe\u7247ID\u5e76\u663e\u793a\u7f29\u7565\u56fe<\/li>\n\n\n\n<li><strong>\u9996\u9875\u5c55\u793a\u5217<\/strong>\uff1a\u4ece\u672f\u8bed\u5143\u6570\u636e <code>zzw_term_show_index<\/code>\uff08\u6570\u7ec4\uff09\u89e3\u6790\u663e\u793a\u9009\u9879\uff1a<\/li>\n\n\n\n<li><code>indexfz<\/code> \u2192 &#8220;\u65b9\u9635\u5757&#8221;<\/li>\n\n\n\n<li><code>indexjn<\/code> \u2192 &#8220;\u80f6\u56ca\u5757&#8221;<\/li>\n\n\n\n<li><code>indexsl<\/code> \u2192 &#8220;\u4e09\u680f\u5757&#8221;<\/li>\n<\/ul><h3 class=\"wp-block-heading\">3. \u6392\u5e8f\u529f\u80fd\u51fd\u6570 <code>zzw_make_custom_taxonomy_columns_sortable()<\/code><\/h3><pre class=\"wp-block-code\"><code>function zzw_make_custom_taxonomy_columns_sortable( $sortable_columns ) {\n    \/\/ \u901a\u5e38\u60c5\u51b5\u4e0b\uff0c\u56fe\u7247\u5b57\u6bb5\u4e0d\u9002\u5408\u6392\u5e8f\uff0c\u4f46\u590d\u9009\u6846\u5b57\u6bb5\u53ef\u4ee5\n    $sortable_columns['zzw_term_show_index'] = 'zzw_term_show_index';\n    return $sortable_columns;\n}<\/code><\/pre><ul class=\"wp-block-list\">\n<li>\u53ea\u8ba9&#8221;\u9996\u9875\u5c55\u793a&#8221;\u5217\u53ef\u6392\u5e8f\uff08\u56fe\u7247\u5217\u901a\u5e38\u4e0d\u9002\u5408\u6392\u5e8f\uff09<\/li>\n<\/ul><h3 class=\"wp-block-heading\">4. \u4e3b\u51fd\u6570 <code>zzw_paixu_term_show_index()<\/code><\/h3><pre class=\"wp-block-code\"><code>function zzw_paixu_term_show_index()\n{\n    \/\/ \u4ec5\u5728\u7ba1\u7406\u540e\u53f0\u6267\u884c\n    if (!is_admin()) {\n        return;\n    }\n    \n    $args = array(\n      'public'   =&gt; true,\n      \/\/'hierarchical'=&gt; false,\n      '_builtin' =&gt; false\n    ); \n    $output = 'names'; \/\/ or objects\n    $operator = 'and'; \/\/ 'and' or 'or'\n    $taxs = get_taxonomies( $args, $output, $operator );\n    $taxs[] = 'category';\n    $taxs[] = 'post_tag';\n    foreach ($taxs as $key =&gt; $value) {\n        add_filter( 'manage_edit-'.$value.'_columns', 'zzw_add_custom_taxonomy_columns' );\n        add_action( 'manage_'.$value.'_custom_column', 'zzw_fill_custom_taxonomy_columns', 10, 3 );\n        add_filter( 'manage_edit-'.$value.'_sortable_columns', 'zzw_make_custom_taxonomy_columns_sortable' );\n    }\n}\n\/\/ \u5c06\u6267\u884c\u65f6\u673a\u63a8\u8fdf\u5230 init \u94a9\u5b50\nadd_action( 'init', 'zzw_paixu_term_show_index', 20 ); \/\/ \u4f18\u5148\u7ea720\u786e\u4fdd\u5176\u4ed6\u63d2\u4ef6\u5df2\u6ce8\u518c\u5206\u7c7b\u6cd5<\/code><\/pre><ul class=\"wp-block-list\">\n<li>\u53ea\u5728\u540e\u53f0\u8fd0\u884c\uff08<code>is_admin()<\/code>\u68c0\u67e5\uff09<\/li>\n\n\n\n<li>\u83b7\u53d6\u6240\u6709\u516c\u5171\u5206\u7c7b\u6cd5\uff08\u5305\u62ec\u81ea\u5b9a\u4e49\u5206\u7c7b\u6cd5\uff09<\/li>\n\n\n\n<li>\u4e3a\u6bcf\u4e2a\u5206\u7c7b\u6cd5\u6dfb\u52a0\u5fc5\u8981\u7684\u94a9\u5b50\uff1a<\/li>\n\n\n\n<li><code>add_filter()<\/code> &#8211; \u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217<\/li>\n\n\n\n<li><code>add_action()<\/code> &#8211; \u586b\u5145\u5217\u5185\u5bb9<\/li>\n\n\n\n<li><code>add_filter()<\/code> &#8211; \u4f7f\u5217\u53ef\u6392\u5e8f<\/li>\n<\/ul><h2 class=\"wp-block-heading\">\u6280\u672f\u7ec6\u8282<\/h2><h3 class=\"wp-block-heading\">\u56fe\u7247\u663e\u793a\u65b9\u5f0f<\/h3><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528 <code>wp_get_attachment_image_url()<\/code> \u83b7\u53d6\u539f\u56feURL<\/li>\n\n\n\n<li>\u4f7f\u7528 <code>wp_get_attachment_image()<\/code> \u663e\u793a\u54cd\u5e94\u5f0f\u7f29\u7565\u56fe<\/li>\n\n\n\n<li>\u4f7f\u7528 <code>get_term_meta()<\/code> \u4ece\u672f\u8bed\u5143\u6570\u636e\u83b7\u53d6\u4fe1\u606f<\/li>\n<\/ul><h3 class=\"wp-block-heading\">\u5206\u7c7b\u6cd5\u8303\u56f4<\/h3><ul class=\"wp-block-list\">\n<li>\u81ea\u52a8\u5e94\u7528\u5230\u6240\u6709\u516c\u5f00\u5206\u7c7b\u6cd5<\/li>\n\n\n\n<li>\u5305\u62ec\u81ea\u5b9a\u4e49\u5206\u7c7b\u6cd5\u3001\u6587\u7ae0\u5206\u7c7b\uff08category\uff09\u548c\u6807\u7b7e\uff08post_tag\uff09<\/li>\n<\/ul><h2 class=\"wp-block-heading\">\u4f7f\u7528\u573a\u666f<\/h2><p>\u8fd9\u6bb5\u4ee3\u7801\u53ef\u80fd\u7528\u4e8e\uff1a<\/p><ol class=\"wp-block-list\">\n<li>\u7535\u5546\u7f51\u7ad9 &#8211; \u5206\u7c7b\u9700\u8981\u4e0d\u540c\u7684PC\/\u79fb\u52a8\u7aef\u5c55\u793a\u56fe\u7247<\/li>\n\n\n\n<li>\u5185\u5bb9\u805a\u5408\u7f51\u7ad9 &#8211; \u5206\u7c7b\u9700\u8981\u5728\u9996\u9875\u4e0d\u540c\u533a\u5757\u5c55\u793a<\/li>\n\n\n\n<li>\u9700\u8981\u7cbe\u7ec6\u5316\u5206\u7c7b\u7ba1\u7406\u7684\u7f51\u7ad9<\/li>\n<\/ol><h2 class=\"wp-block-heading\">\u6d4b\u8bd5\u8bf4\u660e<\/h2><p>\u4ee5\u4e0a\u4ee3\u7801\u5747\u6709\u627e\u627e\u7f51\u6d4b\u8bd5\u5e76\u6210\u529f\uff01\u4f46\u4ee3\u7801\u4f9d\u7136\u5b58\u5728\u4e0d\u8db3\uff0c\u4e3b\u8981\u4f53\u73b0\u5728\uff1a<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u6027\u80fd\u4f18\u5316<\/strong>\uff1a\u56fe\u7247\u5217\u53ef\u80fd\u9020\u6210\u5927\u91cf\u6570\u636e\u5e93\u67e5\u8be2\uff0c\u5e94\u8003\u8651\u6279\u91cf\u83b7\u53d6<\/li>\n\n\n\n<li><strong>\u4ee3\u7801\u7ed3\u6784<\/strong>\uff1a\u53ef\u4ee5\u8003\u8651\u4f7f\u7528\u7c7b\u5c01\u88c5\uff0c\u907f\u514d\u5168\u5c40\u51fd\u6570\u6c61\u67d3<\/li>\n\n\n\n<li><strong>\u7075\u6d3b\u6027<\/strong>\uff1a\u53ef\u4ee5\u901a\u8fc7\u8fc7\u6ee4\u5668\u8ba9\u5176\u4ed6\u4ee3\u7801\u4fee\u6539\u663e\u793a\u7684\u5217<\/li>\n\n\n\n<li><strong>\u53ef\u6392\u5e8f\u6027<\/strong>\uff1a\u9700\u8981\u5b9e\u73b0\u5b9e\u9645\u7684\u6392\u5e8f\u903b\u8f91\uff08\u76ee\u524d\u53ea\u662f\u58f0\u660e\u53ef\u6392\u5e8f\uff09<\/li>\n<\/ol><h2 class=\"wp-block-heading\">\u6539\u8fdb\u5347\u7ea7\u7248<\/h2><pre class=\"wp-block-code\"><code>&lt;?php\n\/**\n * \u5206\u7c7b\u6cd5\u7ba1\u7406\u5217\u589e\u5f3a\u7c7b\n * \u5728\u5206\u7c7b\u6cd5\u5217\u8868\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\u663e\u793a\u56fe\u7247\u548c\u9996\u9875\u5c55\u793a\u8bbe\u7f6e\n *\/\nclass ZZW_Taxonomy_Columns_Manager {\n    \n    \/**\n     * \u5355\u4f8b\u5b9e\u4f8b\n     *\/\n    private static $instance = null;\n    \n    \/**\n     * \u83b7\u53d6\u5355\u4f8b\u5b9e\u4f8b\n     *\/\n    public static function get_instance() {\n        if ( null === self::$instance ) {\n            self::$instance = new self();\n        }\n        return self::$instance;\n    }\n    \n    \/**\n     * \u6784\u9020\u51fd\u6570\n     *\/\n    private function __construct() {\n        $this-&gt;init_hooks();\n    }\n    \n    \/**\n     * \u521d\u59cb\u5316\u94a9\u5b50\n     *\/\n    private function init_hooks() {\n        add_action( 'init', array( $this, 'setup_columns' ), 20 );\n        add_action( 'pre_get_terms', array( $this, 'handle_sorting' ) );\n    }\n    \n    \/**\n     * \u8bbe\u7f6e\u5217\n     *\/\n    public function setup_columns() {\n        \/\/ \u4ec5\u5728\u7ba1\u7406\u540e\u53f0\u6267\u884c\n        if ( ! is_admin() ) {\n            return;\n        }\n        \n        $taxonomies = $this-&gt;get_supported_taxonomies();\n        \n        foreach ( $taxonomies as $taxonomy ) {\n            \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u4fee\u6539\u652f\u6301\u7684\u5206\u7c7b\u6cd5\n            $taxonomy = apply_filters( 'zzw_taxonomy_columns_taxonomy', $taxonomy );\n            \n            add_filter( \"manage_edit-{$taxonomy}_columns\", array( $this, 'add_columns' ) );\n            add_action( \"manage_{$taxonomy}_custom_column\", array( $this, 'fill_columns' ), 10, 3 );\n            add_filter( \"manage_edit-{$taxonomy}_sortable_columns\", array( $this, 'make_columns_sortable' ) );\n        }\n    }\n    \n    \/**\n     * \u83b7\u53d6\u652f\u6301\u7684\u6240\u6709\u5206\u7c7b\u6cd5\n     *\/\n    private function get_supported_taxonomies() {\n        $args = array(\n            'public'   =&gt; true,\n            '_builtin' =&gt; false\n        );\n        \n        $taxonomies = get_taxonomies( $args, 'names' );\n        $taxonomies[] = 'category';\n        $taxonomies[] = 'post_tag';\n        \n        \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u6dfb\u52a0\u6216\u79fb\u9664\u5206\u7c7b\u6cd5\n        return apply_filters( 'zzw_taxonomy_columns_supported_taxonomies', $taxonomies );\n    }\n    \n    \/**\n     * \u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\n     *\/\n    public function add_columns( $columns ) {\n        \/\/ \u83b7\u53d6\u5217\u914d\u7f6e\n        $custom_columns = $this-&gt;get_custom_columns_config();\n        \n        $new_columns = array();\n        \n        \/\/ \u5728\u540d\u79f0\u5217\u4e4b\u540e\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\n        foreach ( $columns as $key =&gt; $value ) {\n            $new_columns[ $key ] = $value;\n            \n            if ( 'name' === $key ) {\n                foreach ( $custom_columns as $column_key =&gt; $column_config ) {\n                    $new_columns[ $column_key ] = $column_config['label'];\n                }\n            }\n        }\n        \n        \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u4fee\u6539\u5217\u7ed3\u6784\n        return apply_filters( 'zzw_taxonomy_columns_structure', $new_columns, $columns );\n    }\n    \n    \/**\n     * \u83b7\u53d6\u81ea\u5b9a\u4e49\u5217\u914d\u7f6e\n     *\/\n    private function get_custom_columns_config() {\n        $columns = array(\n            'zzw_term_img_pc' =&gt; array(\n                'label'       =&gt; __( 'PC\u56fe\u7247', 'zzw-taxonomy-columns' ),\n                'type'        =&gt; 'image',\n                'meta_key'    =&gt; 'zzw_term_img_pc',\n                'sortable'    =&gt; false,\n                'image_style' =&gt; 'max-width:100px;max-height:60px;width:auto !important;height:auto !important;object-fit: contain;'\n            ),\n            'zzw_term_img_m' =&gt; array(\n                'label'       =&gt; __( '\u79fb\u52a8\u7aef\u56fe\u7247', 'zzw-taxonomy-columns' ),\n                'type'        =&gt; 'image',\n                'meta_key'    =&gt; 'zzw_term_img_m',\n                'sortable'    =&gt; false,\n                'image_style' =&gt; 'max-width:100px;max-height:60px;width:100% !important;height:100% !important;object-fit: contain;'\n            ),\n            'zzw_term_show_index' =&gt; array(\n                'label'       =&gt; __( '\u9996\u9875\u5c55\u793a', 'zzw-taxonomy-columns' ),\n                'type'        =&gt; 'checkbox_group',\n                'meta_key'    =&gt; 'zzw_term_show_index',\n                'sortable'    =&gt; true,\n                'options'     =&gt; array(\n                    'indexfz' =&gt; '\u65b9\u9635\u5757',\n                    'indexjn' =&gt; '\u80f6\u56ca\u5757',\n                    'indexsl' =&gt; '\u4e09\u680f\u5757'\n                )\n            )\n        );\n        \n        \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u4fee\u6539\u5217\u914d\u7f6e\n        return apply_filters( 'zzw_taxonomy_columns_config', $columns );\n    }\n    \n    \/**\n     * \u586b\u5145\u5217\u5185\u5bb9\n     *\/\n    public function fill_columns( $content, $column_name, $term_id ) {\n        \/\/ \u83b7\u53d6\u5f53\u524d\u9875\u9762\u6240\u6709\u672f\u8bed\u7684ID\u7528\u4e8e\u6279\u91cf\u67e5\u8be2\n        static $term_ids = null;\n        static $cached_meta = array();\n        \n        \/\/ \u9996\u6b21\u8fd0\u884c\u65f6\u6536\u96c6\u672f\u8bedID\n        if ( null === $term_ids ) {\n            $term_ids = $this-&gt;get_current_page_term_ids();\n            \n            if ( ! empty( $term_ids ) ) {\n                \/\/ \u6279\u91cf\u67e5\u8be2\u6240\u6709\u9700\u8981\u7684\u6570\u636e\n                $cached_meta = $this-&gt;batch_get_term_meta( $term_ids );\n            }\n        }\n        \n        \/\/ \u4ece\u7f13\u5b58\u83b7\u53d6\u6570\u636e\n        $column_config = $this-&gt;get_column_config( $column_name );\n        if ( ! $column_config ) {\n            return $content;\n        }\n        \n        $meta_key = $column_config['meta_key'];\n        $value = isset( $cached_meta[ $term_id ][ $meta_key ] ) ? $cached_meta[ $term_id ][ $meta_key ] : get_term_meta( $term_id, $meta_key, true );\n        \n        \/\/ \u6839\u636e\u5217\u7c7b\u578b\u8f93\u51fa\u5185\u5bb9\n        echo $this-&gt;render_column_content( $column_name, $value, $column_config );\n        \n        return $content;\n    }\n    \n    \/**\n     * \u83b7\u53d6\u5f53\u524d\u9875\u9762\u6240\u6709\u672f\u8bedID\n     *\/\n    private function get_current_page_term_ids() {\n        global $wp_query;\n        \n        $term_ids = array();\n        \n        if ( isset( $wp_query-&gt;terms ) &amp;&amp; is_array( $wp_query-&gt;terms ) ) {\n            foreach ( $wp_query-&gt;terms as $term ) {\n                if ( is_object( $term ) &amp;&amp; isset( $term-&gt;term_id ) ) {\n                    $term_ids[] = $term-&gt;term_id;\n                }\n            }\n        }\n        \n        return $term_ids;\n    }\n    \n    \/**\n     * \u6279\u91cf\u83b7\u53d6\u672f\u8bed\u5143\u6570\u636e\n     *\/\n    private function batch_get_term_meta( $term_ids ) {\n        global $wpdb;\n        \n        if ( empty( $term_ids ) ) {\n            return array();\n        }\n        \n        $term_ids_str = implode( ',', array_map( 'absint', $term_ids ) );\n        \n        \/\/ \u83b7\u53d6\u6240\u6709\u652f\u6301\u7684meta_key\n        $column_configs = $this-&gt;get_custom_columns_config();\n        $meta_keys = array();\n        \n        foreach ( $column_configs as $config ) {\n            $meta_keys[] = $config['meta_key'];\n        }\n        \n        if ( empty( $meta_keys ) ) {\n            return array();\n        }\n        \n        $meta_keys_str = implode( \"','\", array_map( 'esc_sql', $meta_keys ) );\n        \n        \/\/ \u6279\u91cf\u67e5\u8be2\u6240\u6709meta\u6570\u636e\n        $query = $wpdb-&gt;prepare(\n            \"SELECT term_id, meta_key, meta_value \n             FROM {$wpdb-&gt;termmeta} \n             WHERE term_id IN ($term_ids_str) \n             AND meta_key IN ('%s')\",\n            str_replace( \"','\", \"', '\", $meta_keys_str )\n        );\n        \n        $results = $wpdb-&gt;get_results( $query );\n        \n        $cached_meta = array();\n        \n        \/\/ \u7ec4\u7ec7\u6570\u636e\u683c\u5f0f\n        foreach ( $results as $row ) {\n            if ( ! isset( $cached_meta[ $row-&gt;term_id ] ) ) {\n                $cached_meta[ $row-&gt;term_id ] = array();\n            }\n            \n            \/\/ \u53cd\u5e8f\u5217\u5316\u6570\u7ec4\u6570\u636e\n            $meta_value = maybe_unserialize( $row-&gt;meta_value );\n            $cached_meta[ $row-&gt;term_id ][ $row-&gt;meta_key ] = $meta_value;\n        }\n        \n        return $cached_meta;\n    }\n    \n    \/**\n     * \u83b7\u53d6\u5217\u914d\u7f6e\n     *\/\n    private function get_column_config( $column_name ) {\n        $columns = $this-&gt;get_custom_columns_config();\n        return isset( $columns[ $column_name ] ) ? $columns[ $column_name ] : false;\n    }\n    \n    \/**\n     * \u6e32\u67d3\u5217\u5185\u5bb9\n     *\/\n    private function render_column_content( $column_name, $value, $config ) {\n        $output = '';\n        \n        switch ( $config['type'] ) {\n            case 'image':\n                if ( $value ) {\n                    $url = wp_get_attachment_image_url( $value, 'full' );\n                    $image = wp_get_attachment_image( \n                        $value, \n                        'thumbnail', \n                        false, \n                        array( 'style' =&gt; $config['image_style'] )\n                    );\n                    \n                    $output = sprintf(\n                        '&lt;a href=\"%s\" target=\"_blank\"&gt;%s&lt;\/a&gt;',\n                        esc_url( $url ),\n                        $image\n                    );\n                } else {\n                    $output = '\u2014';\n                }\n                break;\n                \n            case 'checkbox_group':\n                if ( ! empty( $value ) &amp;&amp; is_array( $value ) ) {\n                    $options = array();\n                    foreach ( $config['options'] as $key =&gt; $label ) {\n                        if ( in_array( $key, $value ) ) {\n                            $options[] = $label;\n                        }\n                    }\n                    $output = implode( ', ', $options );\n                } else {\n                    $output = '\u2014';\n                }\n                break;\n                \n            default:\n                \/\/ \u5141\u8bb8\u5176\u4ed6\u7c7b\u578b\u901a\u8fc7\u8fc7\u6ee4\u5668\u8f93\u51fa\n                $output = apply_filters( \n                    'zzw_taxonomy_column_content_' . $column_name, \n                    $value, \n                    $config \n                );\n                break;\n        }\n        \n        return apply_filters( 'zzw_taxonomy_column_output', $output, $column_name, $value, $config );\n    }\n    \n    \/**\n     * \u4f7f\u5217\u53ef\u6392\u5e8f\n     *\/\n    public function make_columns_sortable( $sortable_columns ) {\n        $columns = $this-&gt;get_custom_columns_config();\n        \n        foreach ( $columns as $column_key =&gt; $config ) {\n            if ( $config['sortable'] ) {\n                $sortable_columns[ $column_key ] = $column_key;\n            }\n        }\n        \n        return apply_filters( 'zzw_taxonomy_sortable_columns', $sortable_columns );\n    }\n    \n    \/**\n     * \u5904\u7406\u6392\u5e8f\u903b\u8f91\n     *\/\n    public function handle_sorting( $query ) {\n        if ( ! is_admin() || ! $query-&gt;is_main_query() ) {\n            return;\n        }\n        \n        $orderby = $query-&gt;get( 'orderby' );\n        \n        \/\/ \u53ea\u5904\u7406\u6211\u4eec\u7684\u81ea\u5b9a\u4e49\u5b57\u6bb5\u6392\u5e8f\n        $columns = $this-&gt;get_custom_columns_config();\n        $custom_sortable_columns = array();\n        \n        foreach ( $columns as $column_key =&gt; $config ) {\n            if ( $config['sortable'] ) {\n                $custom_sortable_columns[] = $column_key;\n            }\n        }\n        \n        if ( ! in_array( $orderby, $custom_sortable_columns ) ) {\n            return;\n        }\n        \n        \/\/ \u83b7\u53d6\u5bf9\u5e94\u7684meta_key\n        $config = $this-&gt;get_column_config( $orderby );\n        if ( ! $config ) {\n            return;\n        }\n        \n        $meta_key = $config['meta_key'];\n        \n        \/\/ \u8bbe\u7f6e\u5143\u67e5\u8be2\u7528\u4e8e\u6392\u5e8f\n        $meta_query = array(\n            'relation' =&gt; 'OR',\n            array(\n                'key'     =&gt; $meta_key,\n                'compare' =&gt; 'EXISTS'\n            ),\n            array(\n                'key'     =&gt; $meta_key,\n                'compare' =&gt; 'NOT EXISTS',\n                'value'   =&gt; '' \/\/ WordPress\u9700\u8981value\u53c2\u6570\n            )\n        );\n        \n        $query-&gt;set( 'meta_query', $meta_query );\n        $query-&gt;set( 'orderby', 'meta_value' );\n        $query-&gt;set( 'meta_key', $meta_key );\n    }\n    \n    \/**\n     * \u9632\u6b62\u514b\u9686\n     *\/\n    private function __clone() {}\n    \n    \/**\n     * \u9632\u6b62\u53cd\u5e8f\u5217\u5316\n     *\/\n    private function __wakeup() {}\n}\n\n\/\/ \u521d\u59cb\u5316\u7c7b\nadd_action( 'plugins_loaded', function() {\n    ZZW_Taxonomy_Columns_Manager::get_instance();\n} );\n\n\/\/ \u63d0\u4f9b\u4fbf\u6377\u7684\u8bbf\u95ee\u51fd\u6570\uff08\u53ef\u9009\uff09\nif ( ! function_exists( 'zzw_taxonomy_columns' ) ) {\n    function zzw_taxonomy_columns() {\n        return ZZW_Taxonomy_Columns_Manager::get_instance();\n    }\n}<\/code><\/pre><p>\u4e3b\u8981\u6539\u8fdb\u8bf4\u660e\uff1a<\/p><p>1.\u00a0<strong>\u6027\u80fd\u4f18\u5316 &#8211; \u6279\u91cf\u67e5\u8be2<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528\u00a0<code>batch_get_term_meta()<\/code>\u00a0\u65b9\u6cd5\u6279\u91cf\u83b7\u53d6\u6240\u6709\u672f\u8bed\u7684\u5143\u6570\u636e<\/li>\n\n\n\n<li>\u5728\u00a0<code>fill_columns()<\/code>\u00a0\u4e2d\u901a\u8fc7\u9759\u6001\u53d8\u91cf\u7f13\u5b58\u6570\u636e\uff0c\u51cf\u5c11\u6570\u636e\u5e93\u67e5\u8be2\u6b21\u6570<\/li>\n\n\n\n<li>\u4f7f\u7528\u00a0<code>get_current_page_term_ids()<\/code>\u00a0\u83b7\u53d6\u5f53\u524d\u9875\u9762\u6240\u6709\u672f\u8bedID<\/li>\n<\/ul><p>2.\u00a0<strong>\u4ee3\u7801\u7ed3\u6784 &#8211; \u7c7b\u5c01\u88c5<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528\u5355\u4f8b\u6a21\u5f0f\u786e\u4fdd\u53ea\u6709\u4e00\u4e2a\u5b9e\u4f8b<\/li>\n\n\n\n<li>\u79c1\u6709\u5316\u6784\u9020\u51fd\u6570\u3001\u514b\u9686\u548c\u53cd\u5e8f\u5217\u5316\u65b9\u6cd5<\/li>\n\n\n\n<li>\u5c06\u529f\u80fd\u5206\u89e3\u4e3a\u591a\u4e2a\u79c1\u6709\u65b9\u6cd5\uff0c\u63d0\u9ad8\u53ef\u8bfb\u6027\u548c\u7ef4\u62a4\u6027<\/li>\n<\/ul><p>3.\u00a0<strong>\u7075\u6d3b\u6027 &#8211; \u8fc7\u6ee4\u5668\u652f\u6301<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u6dfb\u52a0\u4e86\u591a\u4e2a\u8fc7\u6ee4\u5668\uff1a\n<ul class=\"wp-block-list\">\n<li><code>zzw_taxonomy_columns_taxonomy<\/code>\u00a0&#8211; \u4fee\u6539\u5355\u4e2a\u5206\u7c7b\u6cd5<\/li>\n\n\n\n<li><code>zzw_taxonomy_columns_supported_taxonomies<\/code>\u00a0&#8211; \u4fee\u6539\u652f\u6301\u7684\u6240\u6709\u5206\u7c7b\u6cd5<\/li>\n\n\n\n<li><code>zzw_taxonomy_columns_config<\/code>\u00a0&#8211; \u4fee\u6539\u5217\u914d\u7f6e<\/li>\n\n\n\n<li><code>zzw_taxonomy_columns_structure<\/code>\u00a0&#8211; \u4fee\u6539\u5217\u7ed3\u6784<\/li>\n\n\n\n<li><code>zzw_taxonomy_column_content_{$column_name}<\/code>\u00a0&#8211; \u81ea\u5b9a\u4e49\u5217\u5185\u5bb9\u6e32\u67d3<\/li>\n\n\n\n<li><code>zzw_taxonomy_column_output<\/code>\u00a0&#8211; \u4fee\u6539\u5217\u8f93\u51fa<\/li>\n\n\n\n<li><code>zzw_taxonomy_sortable_columns<\/code>\u00a0&#8211; \u4fee\u6539\u53ef\u6392\u5e8f\u5217<\/li>\n<\/ul>\n<\/li>\n<\/ul><p>4.\u00a0<strong>\u53ef\u6392\u5e8f\u6027 &#8211; \u5b9e\u9645\u6392\u5e8f\u903b\u8f91<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u5b9e\u73b0\u4e86\u00a0<code>handle_sorting()<\/code>\u00a0\u65b9\u6cd5\u5904\u7406\u6392\u5e8f<\/li>\n\n\n\n<li>\u6dfb\u52a0\u4e86\u00a0<code>pre_get_terms<\/code>\u00a0\u94a9\u5b50<\/li>\n\n\n\n<li>\u4e3a\u53ef\u6392\u5e8f\u5217\u8bbe\u7f6e\u4e86\u6b63\u786e\u7684\u00a0<code>meta_query<\/code>\u00a0\u548c\u00a0<code>orderby<\/code>\u00a0\u53c2\u6570<\/li>\n<\/ul><p>5.\u00a0<strong>\u989d\u5916\u6539\u8fdb<\/strong><\/p><ul class=\"wp-block-list\">\n<li><strong>\u914d\u7f6e\u5316\u8bbe\u8ba1<\/strong>\uff1a\u5217\u914d\u7f6e\u96c6\u4e2d\u7ba1\u7406\uff0c\u4fbf\u4e8e\u4fee\u6539<\/li>\n\n\n\n<li><strong>\u7c7b\u578b\u5316\u5217<\/strong>\uff1a\u652f\u6301\u56fe\u50cf\u3001\u590d\u9009\u6846\u7ec4\u7b49\u4e0d\u540c\u7c7b\u578b\u7684\u5217<\/li>\n\n\n\n<li><strong>\u9519\u8bef\u5904\u7406<\/strong>\uff1a\u589e\u52a0\u4e86\u5404\u79cd\u7a7a\u503c\u548c\u9519\u8bef\u68c0\u67e5<\/li>\n\n\n\n<li><strong>\u4ee3\u7801\u6ce8\u91ca<\/strong>\uff1a\u6dfb\u52a0\u4e86\u8be6\u7ec6\u7684PHPDoc\u6ce8\u91ca<\/li>\n\n\n\n<li><strong>\u7f13\u5b58\u673a\u5236<\/strong>\uff1a\u4f7f\u7528\u9759\u6001\u53d8\u91cf\u7f13\u5b58\u6570\u636e<\/li>\n\n\n\n<li><strong>\u4fbf\u6377\u8bbf\u95ee\u51fd\u6570<\/strong>\uff1a\u63d0\u4f9b\u4e86\u00a0<code>zzw_taxonomy_columns()<\/code>\u00a0\u4fbf\u6377\u51fd\u6570<\/li>\n<\/ul><p>\u4f7f\u7528\u793a\u4f8b\uff1a<\/p><pre class=\"wp-block-code\"><code>\/\/ \u6dfb\u52a0\u8fc7\u6ee4\u5668\u6765\u81ea\u5b9a\u4e49\u5217\u914d\u7f6e\nadd_filter( 'zzw_taxonomy_columns_config', function( $columns ) {\n    \/\/ \u6dfb\u52a0\u65b0\u5217\n    $columns['zzw_term_custom'] = array(\n        'label'    =&gt; __( '\u81ea\u5b9a\u4e49\u5217', 'my-theme' ),\n        'type'     =&gt; 'text',\n        'meta_key' =&gt; 'zzw_term_custom',\n        'sortable' =&gt; true\n    );\n    \n    \/\/ \u4fee\u6539\u73b0\u6709\u5217\u7684\u6807\u7b7e\n    $columns['zzw_term_show_index']['label'] = __( '\u9996\u9875\u663e\u793a\u8bbe\u7f6e', 'my-theme' );\n    \n    return $columns;\n} );\n\n\/\/ \u81ea\u5b9a\u4e49\u5217\u5185\u5bb9\u6e32\u67d3\nadd_filter( 'zzw_taxonomy_column_content_zzw_term_custom', function( $value, $config ) {\n    return ! empty( $value ) ? esc_html( $value ) : '\u2014';\n}, 10, 2 );<\/code><\/pre><p>\u8fd9\u4e2a\u5347\u7ea7\u7248\u672c\u4fdd\u6301\u4e86\u539f\u6709\u529f\u80fd\uff0c\u540c\u65f6\u63d0\u9ad8\u4e86\u6027\u80fd\u3001\u53ef\u7ef4\u62a4\u6027\u548c\u6269\u5c55\u6027\u3002<\/p><h2 class=\"wp-block-heading\">\u5347\u7ea7\u517c\u5bb9\u7248<\/h2><pre class=\"wp-block-code\"><code>&lt;?php\n\/**\n * \u5206\u7c7b\u6cd5\u7ba1\u7406\u5217\u589e\u5f3a\u7c7b\n * \u5728\u5206\u7c7b\u6cd5\u5217\u8868\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\u663e\u793a\u56fe\u7247\u548c\u9996\u9875\u5c55\u793a\u8bbe\u7f6e\n * \n * @version 2.0.0\n * @package zzw_Taxonomy_Columns\n * @license GPL v2 or later\n *\/\n\n\/\/ \u9632\u6b62\u76f4\u63a5\u8bbf\u95ee\ndefined( 'ABSPATH' ) || exit;\n\n\/**\n * \u5206\u7c7b\u6cd5\u5217\u589e\u5f3a\u7ba1\u7406\u5668\n *\/\nclass zzw_Taxonomy_Columns_Manager {\n    \n    \/**\n     * \u5355\u4f8b\u5b9e\u4f8b\n     * \n     * @var zzw_Taxonomy_Columns_Manager|null\n     *\/\n    private static ?zzw_Taxonomy_Columns_Manager $instance = null;\n    \n    \/**\n     * \u7f13\u5b58\u7684\u5206\u7c7b\u6cd5\u6570\u636e\n     * \n     * @var array&lt;string, mixed&gt;\n     *\/\n    private array $cached_data = [];\n    \n    \/**\n     * \u83b7\u53d6\u5355\u4f8b\u5b9e\u4f8b\n     * \n     * @return zzw_Taxonomy_Columns_Manager\n     *\/\n    public static function get_instance(): zzw_Taxonomy_Columns_Manager {\n        if ( null === self::$instance ) {\n            self::$instance = new self();\n        }\n        return self::$instance;\n    }\n    \n    \/**\n     * \u6784\u9020\u51fd\u6570\n     *\/\n    private function __construct() {\n        $this-&gt;init_hooks();\n    }\n    \n    \/**\n     * \u521d\u59cb\u5316\u94a9\u5b50\n     *\/\n    private function init_hooks(): void {\n        add_action( 'init', [ $this, 'setup_columns' ], 20 );\n        add_action( 'pre_get_terms', [ $this, 'handle_sorting' ] );\n        add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_admin_styles' ] );\n    }\n    \n    \/**\n     * \u8bbe\u7f6e\u5217\n     *\/\n    public function setup_columns(): void {\n        \/\/ \u4ec5\u5728\u7ba1\u7406\u540e\u53f0\u6267\u884c\n        if ( ! is_admin() || wp_doing_ajax() ) {\n            return;\n        }\n        \n        $taxonomies = $this-&gt;get_supported_taxonomies();\n        \n        foreach ( $taxonomies as $taxonomy ) {\n            \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u4fee\u6539\u652f\u6301\u7684\u5206\u7c7b\u6cd5\n            $taxonomy = apply_filters( 'zzw_taxonomy_columns_taxonomy', $taxonomy );\n            \n            if ( ! is_string( $taxonomy ) || ! taxonomy_exists( $taxonomy ) ) {\n                continue;\n            }\n            \n            add_filter( \"manage_edit-{$taxonomy}_columns\", [ $this, 'add_columns' ] );\n            add_action( \"manage_{$taxonomy}_custom_column\", [ $this, 'fill_columns' ], 10, 3 );\n            add_filter( \"manage_edit-{$taxonomy}_sortable_columns\", [ $this, 'make_columns_sortable' ] );\n        }\n    }\n    \n    \/**\n     * \u83b7\u53d6\u652f\u6301\u7684\u6240\u6709\u5206\u7c7b\u6cd5\n     * \n     * @return array&lt;string&gt;\n     *\/\n    private function get_supported_taxonomies(): array {\n        $args = [\n            'public'   =&gt; true,\n            '_builtin' =&gt; false,\n            'show_ui'  =&gt; true, \/\/ \u53ea\u663e\u793a\u6709\u7ba1\u7406\u754c\u9762\u7684\u5206\u7c7b\u6cd5\n        ];\n        \n        $taxonomies = get_taxonomies( $args, 'names' );\n        $builtin_taxonomies = [ 'category', 'post_tag' ];\n        \n        foreach ( $builtin_taxonomies as $taxonomy ) {\n            if ( taxonomy_exists( $taxonomy ) ) {\n                $taxonomies[] = $taxonomy;\n            }\n        }\n        \n        \/\/ \u53bb\u91cd\u5e76\u91cd\u65b0\u7d22\u5f15\n        $taxonomies = array_values( array_unique( $taxonomies ) );\n        \n        \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u6dfb\u52a0\u6216\u79fb\u9664\u5206\u7c7b\u6cd5\n        return apply_filters( 'zzw_taxonomy_columns_supported_taxonomies', $taxonomies );\n    }\n    \n    \/**\n     * \u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\n     * \n     * @param array&lt;string, string&gt; $columns \u73b0\u6709\u5217\n     * @return array&lt;string, string&gt;\n     *\/\n    public function add_columns( array $columns ): array {\n        \/\/ \u83b7\u53d6\u5217\u914d\u7f6e\n        $custom_columns = $this-&gt;get_custom_columns_config();\n        \n        $new_columns = [];\n        \n        \/\/ \u5728\u540d\u79f0\u5217\u4e4b\u540e\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\n        foreach ( $columns as $key =&gt; $value ) {\n            $new_columns[ $key ] = $value;\n            \n            if ( 'name' === $key ) {\n                foreach ( $custom_columns as $column_key =&gt; $column_config ) {\n                    $new_columns[ $column_key ] = $column_config['label'] ?? '';\n                }\n            }\n        }\n        \n        \/\/ \u5982\u679c\u540d\u79f0\u5217\u4e0d\u5b58\u5728\uff0c\u6dfb\u52a0\u5230\u672b\u5c3e\n        if ( ! isset( $columns['name'] ) ) {\n            foreach ( $custom_columns as $column_key =&gt; $column_config ) {\n                $new_columns[ $column_key ] = $column_config['label'] ?? '';\n            }\n        }\n        \n        \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u4fee\u6539\u5217\u7ed3\u6784\n        return apply_filters( 'zzw_taxonomy_columns_structure', $new_columns, $columns );\n    }\n    \n    \/**\n     * \u83b7\u53d6\u81ea\u5b9a\u4e49\u5217\u914d\u7f6e\n     * \n     * @return array&lt;string, array{\n     *     label: string,\n     *     type: string,\n     *     meta_key: string,\n     *     sortable: bool,\n     *     image_style?: string,\n     *     options?: array&lt;string, string&gt;\n     * }&gt;\n     *\/\n    private function get_custom_columns_config(): array {\n        $columns = [\n            'zzw_term_img_pc' =&gt; [\n                'label'       =&gt; esc_html__( 'PC\u56fe\u7247', 'zzw-taxonomy-columns' ),\n                'type'        =&gt; 'image',\n                'meta_key'    =&gt; 'zzw_term_img_pc',\n                'sortable'    =&gt; false,\n                'image_style' =&gt; 'max-width:100px;max-height:60px;width:auto;height:auto;object-fit:contain;'\n            ],\n            'zzw_term_img_m' =&gt; [\n                'label'       =&gt; esc_html__( '\u79fb\u52a8\u7aef\u56fe\u7247', 'zzw-taxonomy-columns' ),\n                'type'        =&gt; 'image',\n                'meta_key'    =&gt; 'zzw_term_img_m',\n                'sortable'    =&gt; false,\n                'image_style' =&gt; 'max-width:100px;max-height:60px;width:100%;height:100%;object-fit:contain;'\n            ],\n            'zzw_term_show_index' =&gt; [\n                'label'       =&gt; esc_html__( '\u9996\u9875\u5c55\u793a', 'zzw-taxonomy-columns' ),\n                'type'        =&gt; 'checkbox_group',\n                'meta_key'    =&gt; 'zzw_term_show_index',\n                'sortable'    =&gt; true,\n                'options'     =&gt; [\n                    'indexfz' =&gt; esc_html__( '\u65b9\u9635\u5757', 'zzw-taxonomy-columns' ),\n                    'indexjn' =&gt; esc_html__( '\u80f6\u56ca\u5757', 'zzw-taxonomy-columns' ),\n                    'indexsl' =&gt; esc_html__( '\u4e09\u680f\u5757', 'zzw-taxonomy-columns' )\n                ]\n            ]\n        ];\n        \n        \/\/ \u5141\u8bb8\u5176\u4ed6\u63d2\u4ef6\u4fee\u6539\u5217\u914d\u7f6e\n        return apply_filters( 'zzw_taxonomy_columns_config', $columns );\n    }\n    \n    \/**\n     * \u586b\u5145\u5217\u5185\u5bb9\n     * \n     * @param string $content \u539f\u59cb\u5185\u5bb9\n     * @param string $column_name \u5217\u540d\u79f0\n     * @param int $term_id \u672f\u8bedID\n     * @return void\n     *\/\n    public function fill_columns( string $content, string $column_name, int $term_id ): void {\n        $column_config = $this-&gt;get_column_config( $column_name );\n        if ( ! $column_config ) {\n            echo $content;\n            return;\n        }\n        \n        \/\/ \u6279\u91cf\u83b7\u53d6\u5f53\u524d\u9875\u9762\u6240\u6709\u672f\u8bed\u7684\u6570\u636e\n        if ( ! isset( $this-&gt;cached_data['batch_meta'] ) ) {\n            $term_ids = $this-&gt;get_current_page_term_ids();\n            if ( ! empty( $term_ids ) ) {\n                $this-&gt;cached_data['batch_meta'] = $this-&gt;batch_get_term_meta( $term_ids );\n            } else {\n                $this-&gt;cached_data['batch_meta'] = [];\n            }\n        }\n        \n        $meta_key = $column_config['meta_key'];\n        $value = $this-&gt;cached_data['batch_meta'][ $term_id ][ $meta_key ] ?? get_term_meta( $term_id, $meta_key, true );\n        \n        \/\/ \u6839\u636e\u5217\u7c7b\u578b\u8f93\u51fa\u5185\u5bb9\n        echo $this-&gt;render_column_content( $column_name, $value, $column_config );\n    }\n    \n    \/**\n     * \u83b7\u53d6\u5f53\u524d\u9875\u9762\u6240\u6709\u672f\u8bedID\n     * \n     * @return array&lt;int&gt;\n     *\/\n    private function get_current_page_term_ids(): array {\n        global $wp_query;\n        \n        $term_ids = [];\n        \n        if ( isset( $wp_query-&gt;terms ) &amp;&amp; is_iterable( $wp_query-&gt;terms ) ) {\n            foreach ( $wp_query-&gt;terms as $term ) {\n                if ( is_object( $term ) &amp;&amp; isset( $term-&gt;term_id ) &amp;&amp; is_numeric( $term-&gt;term_id ) ) {\n                    $term_ids[] = (int) $term-&gt;term_id;\n                }\n            }\n        }\n        \n        return array_unique( $term_ids );\n    }\n    \n    \/**\n     * \u6279\u91cf\u83b7\u53d6\u672f\u8bed\u5143\u6570\u636e\n     * \n     * @param array&lt;int&gt; $term_ids \u672f\u8bedID\u6570\u7ec4\n     * @return array&lt;int, array&lt;string, mixed&gt;&gt;\n     *\/\n    private function batch_get_term_meta( array $term_ids ): array {\n        global $wpdb;\n        \n        if ( empty( $term_ids ) ) {\n            return [];\n        }\n        \n        \/\/ \u6e05\u7406\u5e76\u9a8c\u8bc1\u672f\u8bedID\n        $term_ids = array_map( 'absint', $term_ids );\n        $term_ids = array_filter( $term_ids );\n        \n        if ( empty( $term_ids ) ) {\n            return [];\n        }\n        \n        \/\/ \u83b7\u53d6\u6240\u6709\u652f\u6301\u7684meta_key\n        $column_configs = $this-&gt;get_custom_columns_config();\n        $meta_keys = [];\n        \n        foreach ( $column_configs as $config ) {\n            if ( isset( $config['meta_key'] ) &amp;&amp; is_string( $config['meta_key'] ) ) {\n                $meta_keys[] = $config['meta_key'];\n            }\n        }\n        \n        if ( empty( $meta_keys ) ) {\n            return [];\n        }\n        \n        \/\/ \u51c6\u5907\u67e5\u8be2\u53c2\u6570\n        $term_ids_placeholders = implode( ',', array_fill( 0, count( $term_ids ), '%d' ) );\n        $meta_keys_placeholders = implode( ',', array_fill( 0, count( $meta_keys ), '%s' ) );\n        \n        \/\/ \u6784\u5efa\u67e5\u8be2\u53c2\u6570\u6570\u7ec4\n        $query_params = array_merge( $term_ids, $meta_keys );\n        \n        \/\/ \u4f7f\u7528prepare\u5b89\u5168\u67e5\u8be2\n        $query = $wpdb-&gt;prepare(\n            \"SELECT term_id, meta_key, meta_value \n             FROM {$wpdb-&gt;termmeta} \n             WHERE term_id IN ({$term_ids_placeholders}) \n             AND meta_key IN ({$meta_keys_placeholders})\",\n            ...$query_params\n        );\n        \n        $results = $wpdb-&gt;get_results( $query, ARRAY_A );\n        \n        $cached_meta = [];\n        \n        \/\/ \u7ec4\u7ec7\u6570\u636e\u683c\u5f0f\n        foreach ( $results as $row ) {\n            $term_id = (int) $row['term_id'];\n            $meta_key = (string) $row['meta_key'];\n            \n            if ( ! isset( $cached_meta[ $term_id ] ) ) {\n                $cached_meta[ $term_id ] = [];\n            }\n            \n            \/\/ \u53cd\u5e8f\u5217\u5316\u6570\u7ec4\u6570\u636e\n            $meta_value = maybe_unserialize( $row['meta_value'] );\n            $cached_meta[ $term_id ][ $meta_key ] = $meta_value;\n        }\n        \n        return $cached_meta;\n    }\n    \n    \/**\n     * \u83b7\u53d6\u5217\u914d\u7f6e\n     * \n     * @param string $column_name \u5217\u540d\u79f0\n     * @return array|null \u5217\u914d\u7f6e\u6216null\n     *\/\n    private function get_column_config( string $column_name ): ?array {\n        $columns = $this-&gt;get_custom_columns_config();\n        return $columns[ $column_name ] ?? null;\n    }\n    \n    \/**\n     * \u6e32\u67d3\u5217\u5185\u5bb9\n     * \n     * @param string $column_name \u5217\u540d\u79f0\n     * @param mixed $value \u503c\n     * @param array $config \u5217\u914d\u7f6e\n     * @return string\n     *\/\n    private function render_column_content( string $column_name, $value, array $config ): string {\n        $output = '';\n        \n        switch ( $config['type'] ?? '' ) {\n            case 'image':\n                $image_id = is_numeric( $value ) ? (int) $value : 0;\n                if ( $image_id &gt; 0 ) {\n                    $url = wp_get_attachment_image_url( $image_id, 'full' );\n                    $image = wp_get_attachment_image( \n                        $image_id, \n                        [ 100, 60 ], \n                        false, \n                        [ \n                            'style' =&gt; $config['image_style'] ?? '',\n                            'loading' =&gt; 'lazy',\n                            'decoding' =&gt; 'async'\n                        ]\n                    );\n                    \n                    if ( $url &amp;&amp; $image ) {\n                        $output = sprintf(\n                            '&lt;a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\"&gt;%s&lt;\/a&gt;',\n                            esc_url( $url ),\n                            $image\n                        );\n                    }\n                }\n                break;\n                \n            case 'checkbox_group':\n                if ( is_array( $value ) &amp;&amp; ! empty( $value ) ) {\n                    $options = [];\n                    $available_options = $config['options'] ?? [];\n                    \n                    foreach ( $available_options as $key =&gt; $label ) {\n                        if ( in_array( $key, $value, true ) ) {\n                            $options[] = esc_html( $label );\n                        }\n                    }\n                    \n                    if ( ! empty( $options ) ) {\n                        $output = implode( ', ', $options );\n                    }\n                }\n                break;\n                \n            default:\n                \/\/ \u5141\u8bb8\u5176\u4ed6\u7c7b\u578b\u901a\u8fc7\u8fc7\u6ee4\u5668\u8f93\u51fa\n                $output = apply_filters( \n                    'zzw_taxonomy_column_content_' . sanitize_key( $column_name ), \n                    $value, \n                    $config \n                );\n                break;\n        }\n        \n        \/\/ \u5982\u679c\u8f93\u51fa\u4e3a\u7a7a\uff0c\u663e\u793a\u7834\u6298\u53f7\n        if ( empty( $output ) ) {\n            $output = '\u2014';\n        }\n        \n        return apply_filters( 'zzw_taxonomy_column_output', $output, $column_name, $value, $config );\n    }\n    \n    \/**\n     * \u4f7f\u5217\u53ef\u6392\u5e8f\n     * \n     * @param array&lt;string, string&gt; $sortable_columns\n     * @return array&lt;string, string&gt;\n     *\/\n    public function make_columns_sortable( array $sortable_columns ): array {\n        $columns = $this-&gt;get_custom_columns_config();\n        \n        foreach ( $columns as $column_key =&gt; $config ) {\n            if ( $config['sortable'] ?? false ) {\n                $sortable_columns[ $column_key ] = $column_key;\n            }\n        }\n        \n        return apply_filters( 'zzw_taxonomy_sortable_columns', $sortable_columns );\n    }\n    \n    \/**\n     * \u5904\u7406\u6392\u5e8f\u903b\u8f91\n     * \n     * @param WP_Term_Query $query \u672f\u8bed\u67e5\u8be2\u5bf9\u8c61\n     *\/\n    public function handle_sorting( WP_Term_Query $query ): void {\n        if ( ! is_admin() || ! $query-&gt;is_main_query() ) {\n            return;\n        }\n        \n        $orderby = $query-&gt;get( 'orderby' );\n        \n        if ( ! is_string( $orderby ) ) {\n            return;\n        }\n        \n        \/\/ \u53ea\u5904\u7406\u6211\u4eec\u7684\u81ea\u5b9a\u4e49\u5b57\u6bb5\u6392\u5e8f\n        $columns = $this-&gt;get_custom_columns_config();\n        $custom_sortable_columns = [];\n        \n        foreach ( $columns as $column_key =&gt; $config ) {\n            if ( $config['sortable'] ?? false ) {\n                $custom_sortable_columns[] = $column_key;\n            }\n        }\n        \n        if ( ! in_array( $orderby, $custom_sortable_columns, true ) ) {\n            return;\n        }\n        \n        \/\/ \u83b7\u53d6\u5bf9\u5e94\u7684meta_key\n        $config = $this-&gt;get_column_config( $orderby );\n        if ( ! $config ) {\n            return;\n        }\n        \n        $meta_key = $config['meta_key'] ?? '';\n        if ( empty( $meta_key ) ) {\n            return;\n        }\n        \n        \/\/ \u83b7\u53d6\u6392\u5e8f\u65b9\u5411\n        $order = strtoupper( $query-&gt;get( 'order', 'ASC' ) );\n        $order = in_array( $order, [ 'ASC', 'DESC' ], true ) ? $order : 'ASC';\n        \n        \/\/ \u8bbe\u7f6e\u5143\u67e5\u8be2\u7528\u4e8e\u6392\u5e8f\n        $meta_query = [\n            'relation' =&gt; 'OR',\n            [\n                'key'     =&gt; $meta_key,\n                'compare' =&gt; 'EXISTS'\n            ],\n            [\n                'key'     =&gt; $meta_key,\n                'compare' =&gt; 'NOT EXISTS',\n                'value'   =&gt; '0' \/\/ WordPress\u9700\u8981value\u53c2\u6570\n            ]\n        ];\n        \n        $query-&gt;set( 'meta_query', $meta_query );\n        \n        \/\/ \u6839\u636e\u5b57\u6bb5\u7c7b\u578b\u8bbe\u7f6e\u5408\u9002\u7684\u6392\u5e8f\u65b9\u5f0f\n        if ( 'checkbox_group' === ( $config['type'] ?? '' ) ) {\n            \/\/ \u5bf9\u4e8e\u6570\u7ec4\u5b57\u6bb5\uff0c\u6309\u662f\u5426\u6709\u503c\u6392\u5e8f\n            $query-&gt;set( 'orderby', 'meta_value' );\n        } else {\n            $query-&gt;set( 'orderby', 'meta_value' );\n        }\n        \n        $query-&gt;set( 'meta_key', $meta_key );\n        $query-&gt;set( 'order', $order );\n    }\n    \n    \/**\n     * \u52a0\u8f7d\u7ba1\u7406\u6837\u5f0f\n     *\/\n    public function enqueue_admin_styles(): void {\n        $screen = get_current_screen();\n        \n        if ( ! $screen || 'edit-tags' !== $screen-&gt;base ) {\n            return;\n        }\n        \n        $taxonomies = $this-&gt;get_supported_taxonomies();\n        $current_taxonomy = $screen-&gt;taxonomy ?? '';\n        \n        if ( in_array( $current_taxonomy, $taxonomies, true ) ) {\n            wp_add_inline_style( 'common', '\n                .column-zzw_term_img_pc,\n                .column-zzw_term_img_m {\n                    width: 120px;\n                    text-align: center;\n                }\n                .column-zzw_term_img_pc img,\n                .column-zzw_term_img_m img {\n                    max-width: 100px;\n                    max-height: 60px;\n                    border-radius: 3px;\n                    box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n                }\n                .column-zzw_term_show_index {\n                    width: 150px;\n                }\n                @media screen and (max-width: 782px) {\n                    .column-zzw_term_img_pc,\n                    .column-zzw_term_img_m,\n                    .column-zzw_term_show_index {\n                        display: none;\n                    }\n                }\n            ' );\n        }\n    }\n    \n    \/**\n     * \u9632\u6b62\u514b\u9686\n     *\/\n    private function __clone() {}\n    \n    \/**\n     * \u9632\u6b62\u53cd\u5e8f\u5217\u5316\n     *\/\n    public function __wakeup() {\n        throw new Exception( 'Cannot unserialize singleton' );\n    }\n}\n\n\/\/ \u5b89\u5168\u521d\u59cb\u5316\nadd_action( 'plugins_loaded', function() {\n    \/\/ \u68c0\u67e5\u5fc5\u8981\u6761\u4ef6\n    if ( ! function_exists( 'add_action' ) ) {\n        return;\n    }\n    \n    try {\n        zzw_Taxonomy_Columns_Manager::get_instance();\n    } catch ( Exception $e ) {\n        \/\/ \u8bb0\u5f55\u9519\u8bef\u4f46\u4e0d\u4e2d\u65ad\u6267\u884c\n        if ( defined( 'WP_DEBUG' ) &amp;&amp; WP_DEBUG ) {\n            error_log( 'zzw Taxonomy Columns Error: ' . $e-&gt;getMessage() );\n        }\n    }\n} );\n\n\/\/ \u63d0\u4f9b\u4fbf\u6377\u7684\u8bbf\u95ee\u51fd\u6570\uff08\u53ef\u9009\uff09\nif ( ! function_exists( 'zzw_taxonomy_columns' ) ) {\n    \/**\n     * \u83b7\u53d6\u5206\u7c7b\u6cd5\u5217\u7ba1\u7406\u5668\u5b9e\u4f8b\n     * \n     * @return zzw_Taxonomy_Columns_Manager\n     *\/\n    function zzw_taxonomy_columns(): zzw_Taxonomy_Columns_Manager {\n        return zzw_Taxonomy_Columns_Manager::get_instance();\n    }\n}<\/code><\/pre><p>PHP 7.4-8.3\u517c\u5bb9\u6027\u5347\u7ea7\u8981\u70b9\uff1a<\/p><p>1.\u00a0<strong>\u7c7b\u578b\u58f0\u660e\u5347\u7ea7<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528PHP 7.4\u7684\u5c5e\u6027\u7c7b\u578b\u58f0\u660e\uff1a<code>private array $cached_data = []<\/code><\/li>\n\n\n\n<li>\u4f7f\u7528PHP 8.0\u7684\u8054\u5408\u7c7b\u578b\uff1a<code>private static ?zzw_Taxonomy_Columns_Manager $instance = null<\/code><\/li>\n\n\n\n<li>\u6dfb\u52a0\u65b9\u6cd5\u53c2\u6570\u548c\u8fd4\u56de\u7c7b\u578b\u58f0\u660e\uff1a<code>: void<\/code>,\u00a0<code>: array<\/code>,\u00a0<code>: string<\/code><\/li>\n\n\n\n<li>\u4f7f\u7528PHP 8.0\u7684<code>array&lt;int, array{...}&gt;<\/code>\u6587\u6863\u6ce8\u91ca\u683c\u5f0f<\/li>\n<\/ul><p>2.\u00a0<strong>PHP 8.x\u7279\u6027\u9002\u914d<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528<code>?:<\/code>\u8fd0\u7b97\u7b26\u63d0\u4f9b\u9ed8\u8ba4\u503c\uff1a<code>$config['type'] ?? ''<\/code><\/li>\n\n\n\n<li>\u4f7f\u7528<code>??=<\/code>\u8fdb\u884c\u5b89\u5168\u7684\u9ed8\u8ba4\u503c\u8bbe\u7f6e<\/li>\n\n\n\n<li>\u6dfb\u52a0\u4e25\u683c\u6bd4\u8f83\uff1a<code>===<\/code>\u4ee3\u66ff<code>==<\/code><\/li>\n\n\n\n<li>\u4f7f\u7528<code>in_array($needle, $haystack, true)<\/code>\u4e25\u683c\u6a21\u5f0f<\/li>\n\n\n\n<li>\u4f7f\u7528<code>array_filter($array)<\/code>\u4e0d\u56de\u8c03\u65f6\u81ea\u52a8\u8fc7\u6ee4\u7a7a\u503c<\/li>\n<\/ul><p>3.\u00a0<strong>\u5b89\u5168\u589e\u5f3a<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u6dfb\u52a0<code>esc_html__()<\/code>\u548c<code>esc_html()<\/code>\u8fdb\u884c\u8f6c\u4e49<\/li>\n\n\n\n<li>\u4f7f\u7528<code>sanitize_key()<\/code>\u6e05\u7406\u952e\u540d<\/li>\n\n\n\n<li>\u6dfb\u52a0<code>rel=\"noopener noreferrer\"<\/code>\u9632\u6b62\u5b89\u5168\u6f0f\u6d1e<\/li>\n\n\n\n<li>\u5bf9SQL\u67e5\u8be2\u4f7f\u7528\u5b89\u5168\u7684\u9884\u5904\u7406\u8bed\u53e5<\/li>\n\n\n\n<li>\u9a8c\u8bc1\u6240\u6709\u5916\u90e8\u8f93\u5165\u548c\u51fd\u6570\u8fd4\u56de\u503c<\/li>\n<\/ul><p>4.\u00a0<strong>\u9519\u8bef\u5904\u7406\u6539\u8fdb<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u6dfb\u52a0\u5f02\u5e38\u5904\u7406\u673a\u5236<\/li>\n\n\n\n<li>\u4f7f\u7528<code>try...catch<\/code>\u5305\u88f9\u521d\u59cb\u5316<\/li>\n\n\n\n<li>\u6dfb\u52a0WP_DEBUG\u65e5\u5fd7\u8bb0\u5f55<\/li>\n\n\n\n<li>\u9a8c\u8bc1\u5206\u7c7b\u6cd5\u5b58\u5728\u6027\uff1a<code>taxonomy_exists()<\/code><\/li>\n\n\n\n<li>\u9a8c\u8bc1\u5c4f\u5e55\u7c7b\u578b\u548c\u6743\u9650<\/li>\n<\/ul><p>5.\u00a0<strong>\u6027\u80fd\u4f18\u5316<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528<code>array_fill()<\/code>\u521b\u5efa\u5360\u4f4d\u7b26\u6570\u7ec4<\/li>\n\n\n\n<li>\u4f7f\u7528\u5c55\u5f00\u8fd0\u7b97\u7b26<code>...$query_params<\/code>\u4f20\u9012\u53c2\u6570<\/li>\n\n\n\n<li>\u6dfb\u52a0\u56fe\u7247\u61d2\u52a0\u8f7d\uff1a<code>loading=\"lazy\"<\/code><\/li>\n\n\n\n<li>\u6dfb\u52a0\u5f02\u6b65\u89e3\u7801\uff1a<code>decoding=\"async\"<\/code><\/li>\n\n\n\n<li>\u6279\u91cf\u67e5\u8be2\u65f6\u6e05\u7406\u548c\u9a8c\u8bc1\u6570\u636e<\/li>\n<\/ul><p>6.\u00a0<strong>\u73b0\u4ee3PHP\u7279\u6027<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528<code>is_iterable()<\/code>\u68c0\u67e5\u53ef\u904d\u5386\u5bf9\u8c61<\/li>\n\n\n\n<li>\u4f7f\u7528<code>is_numeric()<\/code>\u548c\u7c7b\u578b\u8f6c\u6362\u8fdb\u884c\u9a8c\u8bc1<\/li>\n\n\n\n<li>\u4f7f\u7528<code>array_map()<\/code>\u548c<code>array_filter()<\/code>\u94fe\u5f0f\u5904\u7406<\/li>\n\n\n\n<li>\u4f7f\u7528<code>array_unique()<\/code>\u53bb\u91cd<\/li>\n\n\n\n<li>\u4f7f\u7528<code>strtoupper()<\/code>\u548c<code>in_array()<\/code>\u9a8c\u8bc1\u6392\u5e8f\u65b9\u5411<\/li>\n<\/ul><p>7.\u00a0<strong>WordPress\u6700\u4f73\u5b9e\u8df5<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4f7f\u7528<code>wp_add_inline_style()<\/code>\u6dfb\u52a0\u54cd\u5e94\u5f0f\u6837\u5f0f<\/li>\n\n\n\n<li>\u6dfb\u52a0\u5a92\u4f53\u67e5\u8be2\u9690\u85cf\u5c0f\u5c4f\u5e55\u4e0a\u7684\u5217<\/li>\n\n\n\n<li>\u4f7f\u7528<code>ARRAY_A<\/code>\u5e38\u91cf\u83b7\u53d6\u5173\u8054\u6570\u7ec4\u7ed3\u679c<\/li>\n\n\n\n<li>\u6dfb\u52a0\u9002\u5f53\u7684\u94a9\u5b50\u548c\u8fc7\u6ee4\u5668\u6587\u6863<\/li>\n\n\n\n<li>\u9075\u5faaWordPress\u7f16\u7801\u6807\u51c6<\/li>\n<\/ul><p>8.\u00a0<strong>\u5411\u540e\u517c\u5bb9\u6027\u4fdd\u6301<\/strong><\/p><ul class=\"wp-block-list\">\n<li>\u4fdd\u6301\u539f\u6709\u51fd\u6570\u540d\u79f0\u548c\u94a9\u5b50<\/li>\n\n\n\n<li>\u4f7f\u7528\u6761\u4ef6\u68c0\u67e5\u786e\u4fdd\u51fd\u6570\u4e0d\u5b58\u5728<\/li>\n\n\n\n<li>\u63d0\u4f9b\u76f8\u540c\u7684\u8fc7\u6ee4\u5668\u63a5\u53e3<\/li>\n\n\n\n<li>\u4fdd\u6301\u539f\u6709\u7684\u5217\u7ed3\u6784<\/li>\n\n\n\n<li>\u4f7f\u7528\u517c\u5bb9\u7684\u67e5\u8be2\u65b9\u6cd5<\/li>\n<\/ul><p>\u8fd9\u4e2a\u5347\u7ea7\u7248\u672c\u5b8c\u5168\u517c\u5bb9PHP 7.4\u52308.3\uff0c\u540c\u65f6\u5229\u7528\u4e86\u73b0\u4ee3PHP\u7279\u6027\u63d0\u9ad8\u4ee3\u7801\u8d28\u91cf\u548c\u6027\u80fd\u3002<\/p><p>\u6ce8\uff1a\u4ee5\u4e0a\u4e24\u4e2a\u5347\u7ea7\u7248\u5747\u7531AI\u8f85\u52a9\u5b8c\u6210\uff0c\u672a\u6d4b\u8bd5\uff0c\u8bf7\u614e\u7528\uff01<\/p><p><\/p>","protected":false},"excerpt":{"rendered":"<p>WordPress\u672c\u8eab\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5b57\u6bb5\u53ef\u4ee5\u6ee1\u8db3\u6211\u4eec\u7684\u9700\u6c42\uff0c\u4f46\u662f\u5728\u7ba1\u7406\u65b9\u9762\u786e\u4f9d\u7136\u663e\u5f97\u6bd4\u8f83\u7e41\u7410\u3002\u672c\u6587\u63d0\u4f9b\u4e3aWordPress\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217\u7684\u65b9\u6cd5\u5c06\u4e3a\u6211\u4eec\u4fbf\u4e8e\u7ba1\u7406\u548c\u67e5\u770b\u63d0\u4f9b\u4fbf\u5229\u3002 \u7b2c\u4e00\u6b65\uff1a\u6dfb\u52a0\u4f60\u7684\u81ea\u5b9a\u4e49\u5b57\u6bb5 \u6dfb\u52a0\u81ea\u5b9a\u4e49\u5b57\u6bb5\u7684\u5177\u4f53\u65b9\u6cd5\u8fd9\u91cc\u4e0d\u518d\u8d58\u8ff0\uff0c\u8be6\u60c5\u8bf7\u67e5\u770b\u672c\u7b14\u8bb0\u6559\u7a0b\u7684\u201c\u6dfb\u52a0\u5b57\u6bb5\u201d\u7bc7\u7ae0\u3002 \u8fd9\u91cc\u6211\u4eec\u76f4\u63a5\u4f7f\u7528SCF..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"bjjc2nav":[3305],"tuisongtax":[],"class_list":["post-4982","bjjc","type-bjjc","status-publish","hentry","bjjc2nav-addcols"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"WordPress\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":"WordPress\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217"},"qian_art_stzhong":"\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":"\u540e\u53f0\u7684\u5206\u7c7b\u6cd5\u7ba1\u7406\u9875\u9762\u6dfb\u52a0\u81ea\u5b9a\u4e49\u5217"}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/bjjc\/4982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/bjjc"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/types\/bjjc"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/media?parent=4982"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/tags?post=4982"},{"taxonomy":"bjjc2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/bjjc2nav?post=4982"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/tuisongtax?post=4982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}