在 single.php 文件中,我显示了像这样的附加字段
<?php echo apply_filters('the_content', get_post_meta($post->ID, 'Текст', true)); ?>
那些。简码在文本字段中有效,但有一个问题!
我在管理面板中,在附加字段(文本)中,我写道:
<a href="[short_code]">Привет мир</a>: <span class"new">Марс</span>
我的标签不是在一行中显示所有内容,而是<a>
包装在一个标签<p>
中。
如何删除它?但仅从短代码中,因为如果您从所有内容中删除它,文章将合并为一个连续的文本。
在处理您的字段之前删除 wpautop 过滤器,并且不要忘记将其恢复:
在您的评论中写下然后复制到另一个答案中的内容是一个典型的错误代码示例,它以某种方式起作用。我解释。
您解决了这一行的问题:
这是怎么回事,真的吗?
remove_filter()
仅返回 true 或 false(阅读 codex 中的描述)。接下来你打电话WordPress 默默地咀嚼这种废话, apply_filters 什么也不做,并返回
get_post_meta($post->ID, 'Текст', true)
. 事实上,你只是用这么聪明的拐杖把 apply_filters 从你的代码中扔了出去。这相当于您的“棘手”行:因此,您建议的那行代码占其中编写的代码的 1/3,并且会使任何其他不熟悉当前讨论的程序员感到困惑。你不必那样做。
从一开始,我想建议简单地删除 apply_filters() (并将其包装在 do_shortcode() 中),但由于您还有其他一些内容工作,而且我没有看到整个代码,所以我提出了一个建议过滤器。
更新。我将答案和我的测试站点页面上的评论中讨论的所有选项汇总在一起。
该页面有自己的 php 模板。此模板代码:
在functions.php中:
如您所见, apply_filter(remove_filter 选项不起作用。正是因为我把它写出来了——它只是返回 get_post_meta。