2009-11-14 90 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