在WordPress中获取帖子的div内容?

时间:2016-08-10 作者:puneet

我怎样才能拿到div 帖子内容?

使用the_content() 可以获取所有数据,但我需要div 只有到目前为止,我所能做的就是把这篇文章的链接作为div 所容纳之物

我想做的是:

<?php while (have_posts()) : the_post(); ?>

<li style = "text-align: center; float : left;">

  <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php echo get_the_post_thumbnail($id); ?></a>

  <div class="title">
    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
  </div>

  <div id = "result">`

    <?php echo "<script> 
      $(\'#result\').load( \'".the_permalink()." .ps_post_description\' );
    </script>"; ?>

  </div>

</li>

<?php endwhile; ?>
ps_post_description 是我需要其内容的div的类。

2 个回复
最合适的回答,由SO网友:bynicolas 整理而成

使用DOMDocumentDOMXPath 你可以试试这个。

<?php while (have_posts()) : the_post();

ob_start();  // run the_content() through the Output Buffer
the_content();
$html = ob_get_clean(); // Store the formatted HTML
$content = new DomDocument(); // Create a new DOMDocument Object to work with our HTML
$content->loadHTML( $html ); // Load the $html into the new object
$finder = new DomXPath( $content );  // Create a new DOMXPath object with our $content object that we will evaluate
$classname = \'ps_post_description\'; // The class we are looking for

$item_list = $finder->query("//*[contains(@class, \'$classname\')]"); // Evaluates our content and will return an object containing the number of items matching our query
?>

<li style = "text-align: center; float : left;">

  <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php echo get_the_post_thumbnail($id); ?></a>

  <div class="title">
    <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
  </div>

  <div id = "result">`
    <?php 
    // echo the value of each item found
    // You might want to format or wrap your $value according to your specification if necessary
    for( $i = 0; $i < $item_list->length; $i++ ){
    $value = $item_list->item( $i )->nodeValue;

      echo $value;

      // if you want the text to be a link to the post, you could use this instead 
      // echo \'<a href="\' . get_the_permalink() . \'">\' . $value . \'</a>\';

    } ?>
  </div>

</li>

<?php endwhile; ?>

UPDATE

利用Output Buffering 在尝试在DOMDocument中加载HTML之前展开短代码

请注意,这两种解决方案(编辑之前和之后)都有效,因此错误/警告应该来自设置中的其他地方。

SO网友:lucian

你必须把所有的内容都删掉,然后把它删减到那个特定的分区。但你为什么要这样做呢?这是不够的和繁琐的-额外的工作,把它放进数据库,额外的工作,把它出来。您是否考虑过添加一个仅用于该内容的自定义字段?(这段摘录听起来像是你在寻找的,它已经内置了,你需要做的就是<?php the_excerpt(); ?>)