Удаление заголовка из категорий списка wp()


Я пытаюсь удалить/заменить атрибут title в элементах категории, используемых WordPress. Я использую 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>
Author: Alex, 2010-03-09

5 answers

Если вы не хотите использовать плагин, удалите код из плагина Удалить атрибуты заголовка вы можете увидеть основную функцию, используемую для удаления заголовков из категорий.

Откройте свой template/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');

Это добавит новый фильтр, заменяющий функцию out из wp_list_categories, используемую wordpress, и заменит ее функцией выше.

В вашем примере кода

<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>

Если бы заголовок="", был полностью удален.. :)

Кредиты: Тим Холт и его плагин

 9
Author: Marty, 2010-03-08 23:51:40

Для этого есть плагин, возможно, это поможет хотя бы взглянуть на код плагина.

Http://wordpress.org/extend/plugins/remove-title-attributes/

 3
Author: Michael D. Irizarry, 2010-03-08 23:25:42

Это немного поздний ответ на старый пост, но есть гораздо более простой способ, который не требует плагинов или добавления в 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
Author: Mr Jonny Wood, 2013-08-22 10:38:19

Это, вероятно, ваш лучший вариант для тех, кто хочет сделать это без каких-либо functions.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>
 1
Author: Glen Wheeler, 2017-05-18 10:17:54

По умолчанию wp_list_categories будет включать описание категории в атрибут заголовка, если таковой имеется, или "Просмотреть все записи, поданные в категории ", если описания нет.

Мне не нравится, что там есть полное описание. Это то, что я использую в functions.php чтобы настроить атрибут заголовка:

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');

Если вы просто хотите полностью удалить атрибут заголовка, вы можете использовать

    $search = '/ title=".+"/i';
    $replace = '';
 0
Author: Greg Perham, 2011-12-21 20:29:22