Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.11.2016
Сообщений: 71

Хлебные крошки Wordpress - небольшая доработка - подхват кастомной категории из “произвольные поля”

18.02.2017, 11:15. Показов 1130. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, уважаемые гуру кодинга :-)

Создал сайт на Wordpress, это мой первый опыт, потому экспериментирую :-)

Имеется следующий код хлебных крошек, который я нашёл на просторах интернета:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
function crumbs_breadcrumbs_new()
{
    $crumbs_home = 'Главная'; // текст ссылки "Главная"
    $crumbs_last_crumb = 1; // 1 - показывать название текущей статьи/страницы/рубрики, 0 - не показывать
    $crumbs_between = ' » ';
    $crumbs_from = '<span class="current-crumbs">';
    $crumbs_to = '</span>';
    global $post;
    $crumbs_link_to_home = home_url('/');
    $crumbs_from_court = '<span typeof="v:Breadcrumb">';
    $crumbs_to_court = '</span>';
    $crumbs_link_rdf = ' rel="v:url" property="v:title"';
    $crumbs_path = $crumbs_from_court . '<a' . $crumbs_link_rdf . ' href="%1$s">%2$s</a>' . $crumbs_to_court;
    $crumbs_superior = $descendant = $post->post_parent;
    $crumbs_initial_page = get_option('page_on_front');
    if (is_home() || is_front_page()) {
        echo '<div class="block-crumbs"><a href="' . $crumbs_link_to_home . '">' . $crumbs_home . '</a></div>';
    } else {
        echo '<div class="block-crumbs" prefix:v="http://rdf.data-vocabulary.org/#">';
        {
            echo '<span typeof="v:Breadcrumb"><a href="' . $crumbs_link_to_home . '" rel="v:url" property="v:title">' . $crumbs_home . '</a></span>';
            if ($crumbs_initial_page == 0 || $crumbs_superior != $crumbs_initial_page) echo $crumbs_between;
        }
        if (is_category()) {
            $this_category = get_category(get_query_var('cat'), false);
            if ($this_category->parent != 0) {
                $category = get_category_parents($this_category->parent, TRUE, ' ' . $crumbs_between . ' ');
                if ($crumbs_last_crumb == 1) $category = preg_replace("#^(.+)$crumbs_between$#", "$1", $category);
                $category = str_replace('<a', $crumbs_from_court . '<a' . $crumbs_link_rdf, $category);
                $category = str_replace('</a>', '</a>' . $crumbs_to_court, $category);
                echo $category;
            }
            if ($crumbs_last_crumb == 1) echo $crumbs_from . sprintf(' Рубрика "' . single_cat_title('', false) . '"') . $crumbs_to;
        } elseif (is_search()) {
            echo $crumbs_from . sprintf('Результаты поиска для "' . get_search_query() . '"') . $crumbs_to;
        } elseif (is_day()) {
            echo sprintf($crumbs_path, get_year_link(get_the_time('Y')), get_the_time('Y')) . $crumbs_between;
            echo sprintf($crumbs_path, get_month_link(get_the_time('Y'), get_the_time('m')), get_the_time('F')) . $crumbs_between;
            echo $crumbs_from . get_the_time('d') . $crumbs_to;
        } elseif (is_month()) {
            echo sprintf($crumbs_path, get_year_link(get_the_time('Y')), get_the_time('Y')) . $crumbs_between;
            echo $crumbs_from . get_the_time('F') . $crumbs_to;
        } elseif (is_year()) {
            echo $crumbs_from . get_the_time('Y') . $crumbs_to;
        } elseif (is_single() && !is_attachment()) {
            if (get_post_type() != 'post') {
                $post_specimen = get_post_type_object(get_post_type());
                $sleaze = $post_specimen->rewrite;
                printf($crumbs_path, $crumbs_link_to_home . '/' . $sleaze['sleaze'] . '/', $post_specimen->labels->singular_name);
                if ($crumbs_last_crumb == 1) echo $crumbs_between . crumbs_from . get_the_title() . $crumbs_to;
            } else {
                $cat = get_the_category();
                $cat = $cat[0];
                $category = get_category_parents($cat, TRUE, ' ' . $crumbs_between . ' ');
                if ($crumbs_last_crumb == 0) $category = preg_replace("#^(.+)$crumbs_between$#", "$1", $category);
                $category = str_replace('<a', $crumbs_from_court . '<a' . $crumbs_link_rdf, $category);
                $category = str_replace('</a>', '</a>' . $crumbs_to_court, $category);
                echo $category;
                if ($crumbs_last_crumb == 1) echo $crumbs_from . get_the_title() . $crumbs_to;
            }
        } elseif (!is_single() && !is_page() && get_post_type() != 'post' && !is_404()) {
            $post_specimen = get_post_type_object(get_post_type());
            echo $crumbs_from . $post_specimen->labels->singular_name . $crumbs_to;
        } elseif (is_attachment()) {
            $superior = get_post($crumbs_superior);
            $cat = get_the_category($superior->ID);
            $cat = $cat[0];
            if ($cat) {
                $category = get_category_parents($cat, TRUE, ' ' . $crumbs_between . ' ');
                $category = str_replace('<a', $crumbs_from_court . '<a' . $crumbs_link_rdf, $category);
                $category = str_replace('</a>', '</a>' . $crumbs_to_court, $category);
                echo $category;
            }
            printf($crumbs_path, get_permalink($superior), $superior->post_title);
            if ($crumbs_last_crumb == 1) echo $crumbs_between . $crumbs_from . get_the_title() . $crumbs_to;
        } elseif (is_page() && !$crumbs_superior) {
            if ($crumbs_last_crumb == 1) echo $crumbs_from . get_the_title() . $crumbs_to;
        } elseif (is_page() && $crumbs_superior) {
            if ($crumbs_superior != $crumbs_initial_page) {
                $breadcrumbs = array();
                while ($crumbs_superior) {
                    $page = get_page($crumbs_superior);
                    if ($crumbs_superior != $crumbs_initial_page) {
                        $breadcrumbs[] = sprintf($crumbs_path, get_permalink($page->ID), get_the_title($page->ID));
                    }
                    $crumbs_superior = $page->post_parent;
                }
                $breadcrumbs = array_reverse($breadcrumbs);
                for ($i = 0; $i < count($breadcrumbs); $i++) {
                    echo $breadcrumbs[$i];
                    if ($i != count($breadcrumbs) - 1) echo $crumbs_between;
                }
            }
            if ($crumbs_last_crumb == 1) {
                if ($descendant != 0 && $descendant != $crumbs_initial_page) echo $crumbs_between;
                echo $crumbs_from . get_the_title() . $crumbs_to;
            }
        } elseif (is_tag()) {
            echo $crumbs_from . sprintf('Записи с меткой "%s"', single_tag_title('', false)) . $crumbs_to;
        } elseif (is_author()) {
            global $author;
            $userdata = get_userdata($author);
            echo $crumbs_from . sprintf('Записи автора %s', $userdata->display_name) . $crumbs_to;
        } elseif (is_404()) {
            echo $crumbs_from . 'Ошибка 404' . $crumbs_to;
        } elseif (has_post_format() && !is_singular()) {
            echo get_post_format_string(get_post_format());
        }
        if (get_query_var('paged')) {
            if (is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author()) echo ' (';
            echo 'Страница ' . get_query_var('paged');
            if (is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author()) echo ')';
        }
        echo '</div>';
    }
}
Как его подправить, чтобы можно было задать возможность произвольного вывода заголовка и ссылки хлебной крошки на странице конкретной записи через "произвольное поле". К примеру, если введено через "произвольное поле" на конкретной странице croshka_zagolovok = Windows и croshka_link = exsample.com/mycategory/ , ну а если ничего нет, то должна выводиться категория как обычно.

Было: Главная » новость » вышло обновление KB12345
Стало: Главная » Windows » вышло обновление KB12345


Это наверное можно назвать внедрением проверки на наличие записи, которая в случае наличия должна подхватываться и выводить введённое в пути хлебных крошек. Извините за делитанское описание, я просто не программист. Некоторые записи в нескольких категориях сразу и хотелось бы таким образом выводить нужные заголовки со ссылками хлебной крошки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.02.2017, 11:15
Ответы с готовыми решениями:

Не выводятся хлебные крошки в категории Woocommerce
Всем привет. Делаю один сайт, и никак не могу понять, почему не выводятся хлебные крошки Breadcrumb NavXT в категориях товаров Woocommerce....

Хлебные крошки в Wordpress
Здравствуйте! Решил создать сайт подобно этому: http://mmif69.org.ua/. - как реализовывается вывод крошек на вордпрессе? Заранее...

WordPress не показывает произвольные поля
Такой вопрос: создал на странице &quot;Дом №1&quot; два произвольных поля (Цена и площадь), как видно на скрине, однако нигде ничего не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2017, 11:15
Помогаю со студенческими работами здесь

Хлебные крошки формируются правильно, прописывая всю иерархию, а вот URL формируется пропуская категории
Почему хлебные крошки формируются правильно, прописывая всю иерархию до подкатегории, а вот URL формируется пропуская 1 уровень...

Хлебные крошки
Всем привет. Нужно сделать хлебные крошки, как на рисунку. Стрелки управления появляется в случае, когда количество объектов не...

Хлебные крошки
Задача - вывести хлебные крошки для каталога товаров. Сначала показывается тип товара- Фото Потом производитель товара - Canon ...

Хлебные крошки
Здравствуйте! подскажите, пожалуйста, как убрать домик в хлебных крошках? сейчас они выглядят: домик со ссылкой на главную - Главная -...

Хлебные крошки
Сайт сделан на Вордпрессе при помощи плагина Goods catalog реализован на сайте каталог. Пожалуйста помогите разобраться с отображением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru