从帖子内容中删除div和span

时间:2019-04-30 作者:warm__tape

我已经拼凑了下面的代码。我把它保存在一个独立的PHP文件中,这样我就可以按需运行它了。

应该很清楚这意味着什么:循环所有类型为“product”和“product variance”的帖子,然后使用preg\\u replace删除所有div和span标签。

但出于某种原因,以下函数似乎无法删除标记:

<?php

require "wp-config.php";

// Post Types to include
$args = array(
    \'posts_per_page\' => \'50\',
    \'post_type\' => array(
        \'product\',
        \'product-variation\'
    )

);

// The Query
$query = new WP_Query( $args );
$posts = $query->posts;

foreach($posts as $post) {

    $tags = array( \'div\', \'span\');

    $content = $post->post_content;

    foreach ($tags as $tag) {
        $cleanedcontent = preg_replace(\'#<\\s*\' . $tag . \'[^>]*>.*?<\\s*/\\s*\'. $tag . \'>#msi\', \'\', $content);
    }

    echo $cleanedcontent . \'<hr/>\';

    // $cleaned_post = array(
    //  \'ID\'           => $post->ID,
    //  \'post_content\' => $cleanedcontent
    // );
    // wp_update_post( $cleaned_post );

}

echo \'Done.\'

?>
最后,我将使用wp\\u update\\u post保存“清理”的内容-该部分当前已被注释掉。

我的代码部分基于以下内容:strip only specific tags (like <p>), but keep other tags (like <br/>)

你知道为什么我的函数没有去掉div标签吗?

3 个回复
SO网友:Jason Is My Name

我不知道你在这里到底在做什么,但我认为你是想从帖子内容中创建一段代码,然后去掉不必要的标签。

我会使用条形标签:https://www.w3schools.com/php/func_string_strip_tags.asp

<?php

require "wp-config.php";

// Post Types to include
$args = array(
    \'posts_per_page\' => \'50\',
    \'post_type\' => array(
        \'product\',
        \'product-variation\'
    )
);

// The Query
$query = new WP_Query( $args );
$posts = $query->posts;

foreach($posts as $post) {

    $content = $post->post_content;

    $content = echo strip_tags($content, "<div><p><h1>"); // where you pass the code block, then state the tags that you wish to keep. I also cannot recall if it will need to be echo\'d or not.

}

echo \'Done.\'; ?>
在传递代码块的地方,说明要保留的标记。我也记不起是否需要回显。

如果我误解了,请道歉。

谢谢,杰森。

SO网友:Welcher

您可以通过wp_kses() 也这是它的法典条目-https://codex.wordpress.org/Function_Reference/wp_kses

SO网友:Qaisar Feroz

代替

$content = $post->post_content;

foreach ($tags as $tag) {
    $cleanedcontent = preg_replace(\'#<\\s*\' . $tag . \'[^>]*>.*?<\\s*/\\s*\'. $tag . \'>#msi\', \'\', $content);
}
使用

 $content = $cleanedcontent = $post->post_content;

foreach ($tags as $tag) {
    $cleanedcontent = preg_replace(\'#<\\s*\' . $tag . \'[^>]*>.*?<\\s*/\\s*\'. $tag . \'>#msi\', \'\', $cleanedcontent);
}

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post