从_<a href="" rel="tag"></a>()输出中去掉标记

时间:2018-01-31 作者:ScragglyCouch

我想在显示给定类别帖子的页面上,在每个帖子上方显示纯文本标记名。每个帖子只有一个标签。

我已经设置了一个数组来从我想要的类别中获取帖子,并进行了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 );
我有什么遗漏吗?显然肯定有。

1 个回复
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技巧的改变元素的替代方法。

结束

相关推荐

No duplicate tags by category

我有脚本显示类别中的列表标签,效果很好。<ul class=\"inline-list\"> <?php query_posts(\'category_name=lain-lain\'); if (have_posts()) : while (have_posts()) : the_post(); if( get_the_tag_