私はアンカータグにラップする必要があるショートコードを使用していますが、既にコードを破っているように見えるアンカー要素が含まれています。アンカー要素は、予期しない結果を引き起こす可能性があり、あまり論理的ではないため、入れ子にしないでください。PHPはエコーする前にショートコードからアンカー要素を削除します
DOMにエコーする前に、ショートコードからアンカー要素を削除することは可能ですか? 例を挙げてこれを説明しようとしますが、明確でない場合は私に言い訳をしてください。
<a href="http://desired-link-outside-shortcode">
<div class="container">
<h1>Heading</h1>
some code here
<a href="http://example/url">Click me</a>
</div>
</a>
を:[例]のコンテンツが
<div class="container">
<h1>Heading</h1>
some code here
<a href="http://example/url">Click me</a>
</div>
であり、これは、それがこのようなHTML DOMに表示されるはずアンカータグ
echo '<a href="http://desired-link-outside-shortcode">'.$shortCode.'</a>';
に包まれる必要がある $shortCode = do_shortcode([example]);
の場合
しかし、エコーされると、domのように表示されます。
<a href="http://desired-link-outside-shortcode">
</a>
<div class="container">
<h1>Heading</h1>
some code here
<a href="http://example/url">Click me</a>
</div>
私はエコーする前にすべてのアンカー要素を削除したいと考えています。
私は(テストコードを言い訳)必要に応じて動作しませんでした、これを試してみました:
$shortCode = do_shortcode([my_shortcode]);
$startFirstAchor = strpos($shortCode, '<a href');
$endFirstAchor = strpos($shortCode, '</a>') + 4;
$lengthFirst = $endFirstAchor - $startFirstAchor;
$endShortcode = strlen($shortCode);
$lengthSecond = $endShortcode - $endFirstAchor;
$firstPartCode = substr($shortCode, 0, $lengthFirst);
$secondPartCode = substr($shortCode, $endFirstAchor, $lengthSecond);
$refinedShortCode = $firstPartCode . $secondPartCode;
echo $refinedShortCode;
私はPHPがプロのように役立つか、これを達成するための代替方法評価されていないです。
代わりにWPsの 'do_shortcode'のアンカーを使用してみませんか? – lumio
このリンクをチェックしてください。 https://stackoverflow.com/questions/13052598/creating-anchor-tag-inside-anchor-tag –