区分包含图像的P标签和包装Wordpress中的文本节点的P标签?

时间:2009-11-14 03:46:24

标签: php html css wordpress

我需要一个很好的解决方案,能够在wordpress帖子中对<p>标签进行不同的设置。更具体地说,我需要区分段落和图像。 Wordpress只包含<P>标记中的所有新行。

以下是一些可能性:

  • 删除所有<p>代码,并在适当的位置添加<P>代码(文字周围)
  • <P>标签上添加一个包含文字
  • 的课程
  • 以某种方式区分它们(p img不起作用..我需要选择具有img子项的p标签......我宁愿不使用在IE 6中不起作用的选择器)
  • 其他解决方案?

我不希望博客贡献者必须手动执行某些操作(添加div标签),我希望在后台完成此操作。

我知道其他人对此有疑问。请让我知道你的想法!

谢谢大家, 马特穆勒

3 个答案:

答案 0 :(得分:3)

您可以在主题的functions.php文件或插件中创建类似下面的内容过滤器功能。请注意,这将为帖子正文中的任何段落添加一个类,该段具有图像作为其第一个子元素(不提供任何文本),这可能不是您想要的确切行为。

function my_content_filter($content) {
    return preg_replace('|<p>(<img[^<]*)</p>|i', '<p class="foo">${1}</p>', $content);
}
add_filter('the_content', 'my_content_filter');

答案 1 :(得分:0)

function format_content($content) {
    $contentArr = explode("\n", $content);
    $output = "";
    foreach ($contentArr as $entity) {
        $entity = trim($entity);
        $numChars = strlen($entity);
        if(substr($entity, 0, 1) != "<" && substr($entity, $numChars-1) != ">" && $numChars > 0)
            $entity = '<p>'.$entity.'</p>';
        $output .= $entity;
    }
    return $output;
}

我确定我会碰到一些极端情况,但暂时效果很好..它使用get_the_content()来阻止添加p标记,然后将内容传递给此函数,该函数包装不以p标签中的标签开头的杂散文本,然后返回。

答案 2 :(得分:0)

如何使用jQuery的unwrap简单插件? http://wordpress.org/extend/plugins/unwrap-images/

免责声明:我确实根据自己的需要开发了这个插件。