投稿から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のクラスです。
DOMDocument および DOMXPath を使用すると、これを試すことができます。
<?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 _
DOMDocumentにHTMLを読み込もうとする前に、 出力バッファリング を使用してショートコードを拡張しました。
両方の解決策(編集の前後)はうまくいっているので、エラー/警告はあなたの設定の他の場所から来るべきであることに注意してください。
あなたはすべてのコンテンツを取り出して、それからその特定のdivにそれをトリミングしなければならないでしょう。しかし、なぜそれをしたいのですか?それは煩わしくて面倒です - それをデータベースに入れるための余分な仕事、それを出すための余分な仕事。そのコンテンツにだけ使用するカスタムフィールドを追加することを検討しましたか。 (抜粋はあなたが探しているもののように聞こえます、それはすでに組み込まれていて、あなたがそれを使うためにしなければならないのは<?php the_excerpt(); ?>
だけです)