自定义TinyMCE编辑器中Shortcode无法生效的问题求助
问题解决:自定义分类插件中TinyMCE编辑器的短代码不生效
你的判断是对的,问题出在自定义分类页面的内容输出时没有触发短代码解析——WordPress默认只会对文章/页面的内容自动执行do_shortcode,但自定义分类页面的内容(尤其是插件自定义的编辑器字段)不会被自动处理,需要手动添加解析逻辑。
你的短代码本身无问题
先确认:你的短代码定义是正确的,因为在普通文章/页面中能正常工作,排除短代码本身的错误。
解决方案
根据你的插件实现方式,选择以下两种方法之一:
方法1:直接在输出时包裹do_shortcode()
找到插件中输出自定义分类页面编辑器内容的代码,把原始输出改成经过do_shortcode处理的版本。
比如原来的输出代码可能是:
echo get_post_meta( $term_id, 'your_custom_editor_field', true );
修改为:
echo do_shortcode( get_post_meta( $term_id, 'your_custom_editor_field', true ) );
(注意替换your_custom_editor_field为你实际存储编辑器内容的自定义字段键名)
方法2:添加全局过滤器(类似widget_text的思路)
如果插件有自定义的内容输出钩子,或者你想统一处理该字段的输出,可以添加过滤器:
针对自定义字段的过滤器
add_filter( 'get_post_metadata', function( $value, $object_id, $meta_key, $single ) { // 替换为你的自定义字段键名 if ( $meta_key === 'your_custom_editor_field' && $single ) { return do_shortcode( $value ); } return $value; }, 10, 4 );
针对插件自定义输出钩子的过滤器
如果你的插件在输出内容时触发了自定义钩子(比如custom_category_page_content),直接添加:
add_filter( 'custom_category_page_content', 'do_shortcode' );
验证
修改代码后,刷新自定义分类页面,检查[sc_smAciklama]是否正常渲染为对应的<ul>列表内容。
内容的提问来源于stack exchange,提问作者cihankaba
相关产品推荐
相关产品推荐

