2009-11-14 44 views
1

我需要一个很好的解决方案,以便能够在wordpress文章中以不同的方式标记<p>标签。更具体地说,我需要区分段落和图像。 WordPress的只是包装<P>标签中的所有新行。在Wordpress中区分包装图像和包装文本节点的P标签的P标签?

这里有一些可能性:

  • 地带的所有<p>标签,并添加<P>标签在适当情况下(在文本周围)
  • 添加上<P>标记,包装文字
  • 它们之间不知何故分化为一类(p img不起作用..我需要选择具有img孩子的p标签...我宁愿不使用在IE 6中不起作用的选择器)
  • 其他解决方案?

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

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

感谢所有, 马特·穆勒

+0

嘿马特,当你在你的问题中使用html标记逃脱他们与刻度线,所以他们出现并不会格式化 – 2009-11-14 03:51:49

+0

谢谢迈克。我想知道为什么这个列表搞砸了! – Matt 2009-11-14 03:55:12

回答

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'); 
+0

+1表示使用WP:s过滤器。 – 2010-01-25 06:15:57

+0

如何使用多个img元素为p做这项工作? – Mathias 2013-01-28 18:14:48

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标记中的标记开头的杂散文本进行包装,然后返回。

+0

找到角落案例....使用“[”“]”的任何wordpress插件。不要使用这个解决方案。我正在重写它。 – Matt 2009-12-07 02:39:52