从the_content WordPress

时间:2017-05-02 10:55:29

标签: wordpress

我试图从the_content WordPress中删除一个有ID的div。 我正在努力实现这样的目标

jQuery( "#some_id" ).remove();

但在服务器端,

我不知道如何在the_content过滤器钩子的服务器端执行此操作。

这是我想要实现的目标,

add_filter( 'the_content', 'my_the_content_filter', 20 );
function my_the_content_filter( $content ) {


    $content.find('#some_id').remove();


    return $content;
}

3 个答案:

答案 0 :(得分:1)

我认为这是您问题的答案:https://stackoverflow.com/a/1114925/7335278

在您的情况下,这将是:

add_filter( 'the_content', 'my_the_content_filter', 20 );
function my_the_content_filter( $content ) {


    $doc = new DOMDocument();
    $doc->loadHTML($content);
    $element = $doc->getElementById('some_id');
    $element->parentNode->removeChild($element);
    $content = $doc->saveHTML();


    return $content;
}
是的,请告诉我们这是否有效。 欢呼,乔尔

答案 1 :(得分:0)

对不起以前的回答。 我迟到了,我所回答的并不是你所追求的。

这里可能有用。

$str = "<html><head></head><body><span id='remove_this'>This is one 
text</span><br /><span>this is a text after that</span></body></html>";

$id_pos =  strpos($str, 'remove_this');

$tmp_str = substr($str, ($id_pos-10), (strpos(substr($str, ($id_pos-10)), '</span>' )+7));

$str = str_replace($tmp_str, '', $str);

echo $str;

在上面的示例中,我首先搜索id在字符串中的位置。 比我做一个子字符串函数来获取html元素的开头,在这种情况下是span。 在相同的子字符串调用中,我搜索第一个结束的span标记,并在该位置添加7以包含结束的span标记。

比我替换原始字符串中子字符串的结果,你得到你想要的结果。

我知道总有更好的方法,但这是一个:)

注意:我的这个例子确实使用了id位置和标签开头之间的设定距离,因为它直接在开始之后。 所以有可能有更好的方法来获取php中<的第一个实例,但我还不知道。

希望这可能会让你更进一步。 我也可以进入正则表达式,但这更容易,尽管除了最好的方法。 另一方面,正则表达式要复杂得多,而且我对这些东西并不熟悉。

干杯 并且一开始抱歉错误的答案。

答案 2 :(得分:0)

代码未经过测试。刚为你写的...检查这段代码...如果这给出任何语法错误plz修复并让我知道。但是在内容钩子里面,HTML / jsscripts没有运行,所以你可以尝试类似下面的内容 -

add_filter( 'the_content', 'my_the_content_filter', 20 );
function my_the_content_filter( $content ) {


   $content = preg_replace("(<([a-z]+id=\"some_id\")>.*?</\\1>)is","",$content);


    return $content;
}