我想在显示给定类别帖子的页面上,在每个帖子上方显示纯文本标记名。每个帖子只有一个标签。
我已经设置了一个数组来从我想要的类别中获取帖子,并进行了WP\\u查询。这些帖子显示在nice div中,包括标题、内容等。。我的问题是那些该死的标签!
我可以使用以下选项显示每个帖子的标签名:
echo the_tags(\'\');
但这太糟糕了
<a href="[link to tag page]" rel="tag">[My Tag Name]</a>
我在Wordpress Codex上尝试了strip\\u标签的变体和几个函数
the_tags()
删除html-全部无效。
我可以使用下一种方法(显示纯文本,万岁!)去掉html,但不幸的是,每个帖子都会在短数组中添加标记名$term_names[]
每个帖子旁边显示的标签列表会随着帖子的增加而增加。
$terms = wp_get_post_tags( $post->ID );
foreach( $terms as $term )
$term_names[] = $term->name;
echo implode( \', \', $term_names );
我有什么遗漏吗?显然肯定有。
SO网友:Rick Hellewell
您可以使用DOM对象来更改/删除标记及其参数。有关所有详细信息,请参见此处https://stackoverflow.com/questions/3820666/grabbing-the-href-attribute-of-an-a-element
代码如下:(此示例将所有H1元素的类更改为“a\\u new\\u class”,删除所有现有类)
$html = "<h1 class=\'the_old_class\'>A Heading</h1>";
$dom = new DOMDocument;
libxml_use_internal_errors(false); // supress errors
$dom->loadHTML($html, LIBXML_NOERROR); // supress errors
foreach ($dom->getElementsByTagName(\'h1\') as $node) {
$node->setattribute(\'class\',\'a_new_class\');
$dom->saveHtml($node) ;
}
$html = $dom->saveHTML(); // saves the object (all of the html) so we can return it
尽管另一个答案有效;我添加它是为了展示一种不依赖regex技巧的改变元素的替代方法。