从 wp_list_categories() 中删除标题
Posted
技术标签:
【中文标题】从 wp_list_categories() 中删除标题【英文标题】:Removing title from wp_list_categories() 【发布时间】:2011-01-25 05:08:57 【问题描述】:我正在尝试删除/替换 WordPress 使用的类别元素上的 title 属性。我使用的是 WordPress 2.9.1,代码如下:
<div id="categories">
<h3>Manufacturers</h3>
<ul>
<?php str_replace("title=\"View all posts filed under ","",wp_list_categories('use_desc_for_title=0&exclude=1,2,3,4,5&title_li=&hierarchical=1')); ?>
</ul>
</div>
从我读到的内容来看,这种方法用于旧版本(虽然我从未尝试过)。我真的不想破解 WordPress 的内部结构,或者不得不使用 javascript 破解,因为这样直截了当。任何帮助表示赞赏...
更新 下面是从上面的代码创建的...
<div id="categories">
<h3>Manufacturers</h3>
<ul>
<li class="cat-item cat-item-7"><a href="http://localhost/crosstrainers/?cat=7" title="View all posts filed under Featured">Featured</a>
</li>
</ul>
</div>
【问题讨论】:
您能否具体说明“类别元素”对于非 WP 专家的含义? ... 并显示一些有问题的 html 代码? 类别(可选)与博客文章相关联,当使用 wp_list_categories() 显示它们时,它会不断添加默认标题元素(例如,title="查看#category 下的所有帖子" 到它的锚点创建。我似乎无法删除或替换标题 【参考方案1】:如果您不想使用该插件,请从Remove Title Attributes plugin 中剥离代码,您可以看到用于从类别中删除标题的主要功能..
打开您的模板/function.php 文件并插入以下内容...
function wp_list_categories_remove_title_attributes($output)
$output = preg_replace('` title="(.+)"`', '', $output);
return $output;
add_filter('wp_list_categories', 'wp_list_categories_remove_title_attributes');
这将添加一个新的过滤器,替换 wordpress 使用的 wp_list_categories 函数,并将其替换为上面的函数..
在您的代码示例中
<div id="categories">
<h3>Manufacturers</h3>
<ul>
<?php wp_list_categories(); ?>
</ul>
</div>
将输出为
<div id="categories">
<h3>Manufacturers</h3>
<ul>
<li class="cat-item cat-item-7"><a href="http://localhost/crosstrainers/?cat=7">Featured</a></li>
</ul>
</div>
如果title="", 已被完全删除.. :)
感谢:Tim Holt & his plugin
【讨论】:
非常感谢!!但是为什么 use_desc_for_title=0 不起作用? codex.wordpress.org/Template_Tags/wp_list_categories【参考方案2】:这在旧帖子上的答案有点晚,但有一种更简单的方法,不需要插件或添加到functions.php
:
<?php wp_list_categories('title_li='); ?>
或者,如果与输出的其他自定义一起使用:
<?php $args = array (
'title_li' => __( '' ),
'hide_empty' => 0,
'show_count' => 1,
'use_desc_for_title' => 0,
'child_of' => 1
);
wp_list_categories( $args ); ?>
【讨论】:
【参考方案3】:有一个插件,也许这至少可以帮助查看插件代码。
http://wordpress.org/extend/plugins/remove-title-attributes/
【讨论】:
【参考方案4】:对于任何想要在没有任何函数的情况下执行此操作的人来说,这可能是您的最佳选择。php 工作
只需将此添加到您的模板中。
<ul class="nav">
<?php wp_list_categories( array(
'orderby' => 'name',
'taxonomy' => 'product_cat',
'depth' => 1,
'title_li' => '',
'hide_title_if_empty' => true,
'use_desc_for_title' => 0,
'include' => array( 28, 27, 8, 29, 43, 31 )
) ); ?>
</ul>
【讨论】:
【参考方案5】:默认情况下,如果有,wp_list_categories 将在标题属性中包含类别描述,如果没有描述,则“查看 category 下的所有帖子”。
我不喜欢在里面放完整的描述。这是我在functions.php中用来自定义title属性的:
function custom_categories_title($output)
$search = '/title=".+"(.*>)(.+)</i';
$replace = "title=\"View all articles filed under $2\"$1$2<";
return preg_replace($search, $replace, $output);
add_filter('wp_list_categories', 'custom_categories_title');
如果你只是想完全删除 title 属性,你可以使用
$search = '/ title=".+"/i';
$replace = '';
【讨论】:
以上是关于从 wp_list_categories() 中删除标题的主要内容,如果未能解决你的问题,请参考以下文章
WordPress基础:常用分类列表wp_list_categories
wp_list_categories() - 在子类别页面中显示第一级类别和当前术语的子项
Wordpress wp_list_categories,如何突出显示“所有类别”