Нуждаюсь в помощи “санируя” пользовательскую функцию, которая вытягивает краткий заголовок категории в класс тела

Не уверенный, если "очистка" является действительно корректной фразой для использования для этого, но это было лучшее, о котором я мог думать... так или иначе, вот проблема:

Моя функция работает отлично как так...

// add category id to body & post classes 
function category_id_class($classes) {
    global $post;
    foreach((get_the_category($post->ID)) as $category)
        $classes [] = $category->cat_name;
        return $classes;
}
add_filter('post_class', 'category_id_class');
add_filter('body_class', 'category_id_class');

Это работает отлично до вводов данных пользователем категория, таких как "Категория 1" с пространством. Пробелы, очевидно, не желательны как классы CSS поэтому, если бы нам можно было бы, возможно, просто добавить тире для замены пространства, которое было бы прекрасно - просто не уверенный, как выполнить это?

Спасибо!

0
13.01.2013, 03:11
3 ответа

Просто используйте $category->slug вместо $category->cat_name. Краткие заголовки уже являются нижним регистром и с тире вместо пробелов.

1
19.02.2020, 23:39

sanitize_html_class санирует имя класса HTML, чтобы гарантировать, что оно только содержит допустимые символы.

foreach((get_the_category($post->ID)) as $category)
    $classes [] = sanitize_html_class($category->cat_name);
2
19.02.2020, 23:39

sanitize_title_with_dashes должен добиться цели.

Пример:

foreach((get_the_category($post->ID)) as $category)
    $classes [] = sanitize_title_with_dashes($category->cat_name);
1
19.02.2020, 23:39
  • 1
    Спасибо за ответ! Все я вижу рабочие примеры на их ссылочной странице однако, должно использовать определенный заголовок, моя является динамичной в зависимости от категории, таким образом, я не слишком уверен, как добавить это к моей функции, к сожалению. –  Mr.Brown 13.01.2013, 03:24
  • 2
    @Mr. Brown: Я добавил пример. –  akTed 13.01.2013, 03:48
  • 3
    Действительно цените справку AKTed, я +1'd Ваш ответ, так как Вы старались изо всех сил показывать мне рабочий пример... Я решил пойти с ответом pogoking с тех пор, хотя, так как его ответ был намного более чистым решением. Оба - жизнеспособные варианты хотя так спасибо! –  Mr.Brown 13.01.2013, 05:37

Теги

Похожие вопросы