gpt4 book ai didi

php - 解析 WordPress 帖子内容

转载 作者:行者123 更新时间:2023-12-01 09:58:20 28 4
gpt4 key购买 nike

我有一个奇怪的布局要四处走动,我不知所措,即使在规划阶段也是如此。本质上我需要分离出所有不是 .gallery 的内容并将其放入 <aside /> .我最初考虑使用 edit_post 的插件hook from the Plugin API , 但此后决定反对它,因为此内容更改是特定于布局的,我想维护一个干净的数据库。 所以...

我如何解析 WP 的 the_content对于不是 .gallery 的内容?不可否认,我不是 PHP 专家,所以我非常感谢您的帮助!


根据迈克尔在下方的评论 - 这是 WP 的 the_content 的示例类输出:

HTML

<div class="entry-content">
<div class="gallery">
<dl class="gallery-item">
<dt class="gallery-icon portrait">
<img src="/imagePath/etc.jpg" class="attachment-thumbnail">
</dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon portrait">
<img src="/imagePath/etc.jpg" class="attachment-thumbnail">
</dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon portrait">
<img src="/imagePath/etc.jpg" class="attachment-thumbnail">
</dt>
</dl>
</div>
<p>Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet.</p>
<ul>
<li>Item A</li>
<li>Item B</li>
<li>Item C</li>
</ul>
</div>

期望的输出

<div class="entry-content">
<div class="gallery">
<dl class="gallery-item">
<dt class="gallery-icon portrait">
<img src="/imagePath/etc.jpg" class="attachment-thumbnail">
</dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon portrait">
<img src="/imagePath/etc.jpg" class="attachment-thumbnail">
</dt>
</dl>
<dl class="gallery-item">
<dt class="gallery-icon portrait">
<img src="/imagePath/etc.jpg" class="attachment-thumbnail">
</dt>
</dl>
</div>
<aside>
<p>Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet.</p>
<ul>
<li>Item A</li>
<li>Item B</li>
<li>Item C</li>
</ul>
</aside>
</div>

最佳答案

您需要使用 Dom Parser为了这。这是一个示例,说明如何使用您的标记作为示例。测试产生了预期的结果,因此希望这能为您提供所需的先机:

add_filter( 'the_content', 'wrap_nongallery_aside', 20 );
function wrap_nongallery_aside($content){
$dom = new DOMDocument();
$dom->loadHTML($content); // Replace with Edit below if PHP >= 5.4
$aside = $dom->createElement('aside');
$xpath = new DOMXPath($dom);
$not_gallery = $xpath->query('//div[@class="entry-content"]/*[not(contains(@class, "gallery"))]');

foreach($not_gallery as $ng){
$aside->appendChild($ng);
}
$dom->getElementsByTagName('div')->item(0)->appendChild($aside);
return $dom->saveHTML();
}

编辑:

如果您使用的是 PHP >= 5.4,那么您可以轻松删除任何额外的 <html><body>使用以下方法从生成的标记中提取标签:

$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

关于php - 解析 WordPress 帖子内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com