从 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()

wp_list_categories() - 在子类别页面中显示第一级类别和当前术语的子项

Wordpress wp_list_categories,如何突出显示“所有类别”

WordPress分类列表函数:wp_list_categories用法及参数详解举例

1144: 零起点学算法51——数组中删数