2015-12-16 6 views
0

я добавил пользовательские функции PHP для моего Wordpress шаблона, где я хочу повторить содержание страниц под определенным родителем:WordPress содержания PHP форматирования

Departments 
    -department 1 (get the title and the content clean) 
    -department 2 (get the title and the content clean) 
    (...) 

код я до сих пор не работает, как я хотите, название в порядке, но мне нужно отфильтровать содержимое, чтобы я мог захватить только текст между тегом "<p>". Это возможно? Спасибо.

functions.php

function echo_childs_of($postID) { 
    $args = array(
     'order' => 'ASC', 
     'post_parent' => $postID, 
     'post_status' => null, 
     'post_type' => 'any' 
    ); 

    $page_childs = get_children($args); 

    if ($page_childs) { 

     foreach ($page_childs as $child) { 

      $title = get_the_title($child); 
      $content = get_the_content($child); 
      $content = strip_shortcodes($content); 
      $content = apply_filters('the_content', $content); 
      $content = str_replace(']]>', ']]>', $content); 
      $content = strip_tags($content); 

      echo $title; 
      echo $content; 
     } 




    } 
} 

на моей странице PHP

echo_childs_of(7); 

ответ

0

Вы можете использовать DOM, чтобы найти элементы р тегов и itarate над ними с помощью для цикла, чтобы сделать все это, что вам хотеть сделать.

$content = get_the_content($child); 
$doc = new DOMDocument(); 
@$doc->loadHTML($content); 
$p_elements = $doc->getElementsByTagName('p'); 
foreach ($p_elements as $p) { 
       //Do something with the p element... Strip tags maybe? 
} 
+0

@PeterSmith Я получаю сообщение об ошибке: ** Не удалось загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера) ** –

+0

HTTP: // pastebin.com/raw/zFF7zu93 –

0

Попробуйте это:

$content = get_the_content($child); 
preg_match('/<p>(.*)<\/p>/', $content, $match); 
$content = $match[1]; 
Смежные вопросы