问题描述
我正在使用 wordpress 网站并想删除或替换一些文本。这是来自我无法更改输出的插件的内容(至少从我所有的尝试来看)。
以括号为例;
(文本:date1–date2)
(文本:Feb-09-Feb-12)
这两个日期是可变的,因为它们会一直变化。有没有办法可以设置通配符来说明 data1 和 data2 中的任何内容,用 X 替换字符串 date1-date2 或完全删除整个字符串“(The Text: date1–date2)”。
是否有可以添加到我的主题 function.PHP 文件中的函数?
或者作为替代使用 css。此文本位于一个 div 中,我可以将其设置为 diaply:none 但在其中我需要另一个 div 来显示。我的想法是删除文本,如上所述。同样,这是来自插件的内容,我无法更改输出(至少从我的所有尝试来看)。我尝试了可见性,但它留下了文本所在的空间。
如何在设置为 display:none 的 div 中显示某些内容?
所以
<div style="display:none">
<div>
display something
</div>
</div>
感谢您的帮助
解决方法
您不能在设置为 sizeof
的元素中显示某些内容。您可以尝试将元素的 display: none;
设置为 0,然后使用 font-size
选择器将您的文本添加到 :after
并将 content
设置回可读的内容:
font-size
div { font-size: 0; }
div:after { font-size: 16px; content: "This Text is shown"; }
或者,这是一个有点“锤击苍蝇”的解决方案,但使用 template_redirect
钩子,您可以打开 Output Buffering 并在内容上运行 preg_replace()
缓冲区,这是一种我喜欢称之为“运行时查找和替换”的技术。
<div>(The Text: date01-date02)</div>
文档和函数参考
功能 | 链接描述 |
---|---|
add_action( 'template_redirect','global_find_replace',99 );
function global_find_replace(){
ob_start( function( $buffer ){
$text = 'Your Text Here';
$buffer = preg_replace('/\(The Text: .*\)/',$text,$buffer );
return $buffer;
});
}
|
Fires before determining which template to load. |
template_redirect |
Perform a regular expression search and replace |