<p>FAQPage スキーマを Web サイトに追加したいと考えています。 </p>
<p>これを行うには、疑問符が付いたすべての <code><h2></code> または <code><h3></code> タグを見つける必要があります。それが問題なのです。 </p>
<p>その後、タイトルの後の最初の <code><p></code> タグが答えとして必要になります。 </p>
<p>最終結果は次のようになります:</p>
<pre class="brush:php;toolbar:false;">{
"@type": "質問",
"name": "返金の処理にはどのくらい時間がかかりますか?",
"受け入れられた回答": {
"@type": "回答",
"text": "最初の P タグから取得したコンテンツ",
"url": "https://www.example.com/answer#anchor_link"
}
}</pre>
<li>問題の <code>"name"</code> は、<code><h2></code> または <code><h3></code> タグです。 </li>
<li>回答の <code>「url」</code> は、<code><h2></code> または <code><h3></code> から取得されます。 ; タグ パーマリンクとアンカーリンク。 </li>
<li><strong>これら 2 つのパラメータは解決されました</strong></li>
</ul>
<p>残念ながら、title タグの後の最初の段落タグを取得する方法がわかりません。</p>
<p>次の行の最初の段落のコンテンツを取得する必要があります: </p>
<pre class="brush:php;toolbar:false;">"text": "最初の P タグから取得されたコンテンツ",</pre>
<p>これは私の現在のコードです: </p>
<pre class="brush:php;toolbar:false;"><?php
$content_postid = get_the_ID();
$content_post = get_post($content_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
libxml_use_internal_errors(true);
$dom = 新しい DOMDocument;
$dom->loadHTML('<?xmlcoding="utf-8" ?>' . $content);
$xp = 新しい DOMXPath($dom);
$query = "//h2[を含む(., '?')] | //h3[を含む(., '?')]";
$nodes = $xp->query($query);
$スタック = [];
if ($nodes) {
$faq_count = count($nodes);
$faq_i = 1;
エコー '
<script type="application/ld json">
{
"@context": "https://schema.org",
"@type": "FAQページ",
"メインエンティティ": [';
foreach($nodes as $node) {
エコー '{
"@type": "質問",
"name": "'.$node->nodeValue.'",
"受け入れられた回答": {
"@type": "回答",
"text": "最初の P タグから取得したコンテンツ",
"url": "'.get_permalink().'#'.$node->getAttribute('id').'"
}
}';
if ($faq_i != $faq_count) : echo ','; endif; $faq_i ;
}
echo ']}</script>';
}
?></pre>
<p>ご覧のとおり、このコード行を使用して、すべての <code><h2></code> または <code>?</code> ;< を含む <code> を検索します。 h3>タグ:
<pre class="brush:php;toolbar:false;">$query = "//h2[contains(., '?')] | //h3[contains(., '?')]"; </pre>
<p>タイトルの後の段落を見つけるには、2 番目の <code>$query</code> が必要だと思いますか?しかし、タイトルの後の最初のタグを確認するにはどうすればよいでしょうか?</p>
<p>次の追加クエリを試してみました: </p>
<pre class="brush:php;toolbar:false;">$query2 = "//h2[contains(., '?')]/following-sibling::p[1] | //h3[contains (., '?')]/following-sibling::p[1]";</pre>
<p>しかし、<code>following-sibling::</code> も <code>following::</code> も機能しません。
常に最後の見出しの後に段落が表示されます。 </p>
<p>最初のクエリを解決する必要がありますか?自分がどのレベルにいるのか知りたいですか? </p>
<p>これは <code>$content_post</code> の例です (常に異なります): </p>
<pre class="brush:php;toolbar:false;"><h2>Lorem ipsum dolor sit amet?</h2>
<p>consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquamerat volutpat. Ut wisi enim ad minim</p>
<p>ベニアム、キス・ノストラッドの演習でウラムコーパーのサシピット・ロボルティス・ニスルト・アリクイップのエクス・エア・コモド結果を確認してください。
<h3>Duis autem vel eum?</h3>
<p>陰唇のヘンドレリットのアイリスは、結果的にエッセの痴漢行為を起こし、ベロとアカムサンとイウストで、悲惨な状況を引き起こし、自分自身を認識し、自分自身を混乱させます。</p>
<h2>一時的に休む必要はありますか?</h2>
<h3>nobis eleifend オプション congue nihil</h3>
<p>インパーディート ドーミング ID quod mazim placerat facer possim assum。
<p>最低限の利益を確保し、ウラムコーパーの疑いとロボティス・ニスルトの行動を監視し、戦闘結果を把握してください。</p>
<h3>Duis autem vel?</h3>
<p>口の中でのヘンドレリットの死は、痴漢行為の結果、ベロとアカムサンとイウストでの悲惨な状況の中で、悲惨な状況を引き起こします。</p& gt;
<h4>一時的にナム・リベル</h4>
<p>eleifend オプション congue nihil imperdiet doming id quod mazim placerat facer possim assum.</p></pre>
<p><br /></p>
foreach
を次のように変更して、機能するかどうかを確認してください。