Когда сообщение разделено на несколько страниц, тема TwentyTen использует встроенную функцию wp_link_pages
для отображения панели навигации в конце сообщения.
Я пытаюсь стилизовать эти элементы для своей темы, но, к сожалению, кажется, что текущий номер страницы не может быть стилизован.
Я предполагаю, что я должен переопределить wp_link_pages
функцию, но я все еще изучаю основы программирования WP.
Можете ли вы помочь мне определить шаги для решения этой проблемы?
К сожалению, нет способа сделать это только с помощью встроенных функций: WP… не зависит от запросов и всегда выдает ссылки на текущую страницу (навигация, список страниц…).
Также нельзя использовать фильтр, т.к.
wp_link_pages()
нет соответствующего фильтра.В своих темах я использую собственную функцию, основанную на этом коде. Возможно, он слишком длинный, чтобы размещать его здесь, поэтому я разместил его в качестве плагина на GitHub: Logical Page Links.
Вы можете использовать плагин как есть или скопировать код в свою тему.
Результирующая разметка будет выглядеть так:
Отмечает
<b>
текущую страницу, вы можете стилизовать ее с помощью:Дополнительные функции перечислены в файле readme плагина.
Обновлять
Я неправильно понял вопрос. Я думал, вам нужна такая функция для архивов. Извиняюсь.
Вот переписанная версия
wp_link_pages()
в качестве плагина. Думаю, вы поместите это в свою тему.Эй @toscho большое спасибо, сейчас я на работе, но в ближайшие дни я обязательно попробую ваш плагин. Как вы думаете, лучше использовать его как плагин или лучше реализовать эти функции в functions.php моей темы?
@Drake Я использую его как часть своей темы. Поскольку вы, вероятно, никогда не оставляли его без стиля, вы можете использовать его в своей теме.
Я тестирую код, который вы мне связали, реализуя различные функции в functions.php. Теперь во время отладки я вижу, что $GLOBALS[‘wp_query’] установлен, но $GLOBALS[‘wp_query’]->max_num_pages всегда возвращает 0. Вы знаете, что может быть не так?
@ Дрейк, мне очень жаль; Я неправильно понял ваш вопрос. Мой первый плагин работает только для архивов. Я сделал обновление с другой функцией, чтобы решить вашу проблему.
Простой способ, который я использую сейчас, — использовать «link_before» и «link_after» как часть аргументов wp_link_pages. Затем вы можете обернуть каждый номер, включая активный, в тег, а затем оформить соответствующим образом.
Я согласен с Себ; способ сделать это — использовать link_before и link_after. Чтобы расширить это, используйте, например,
'link_before' => '<span class="page-link-number">', 'link_after' => '</span>'
Тогда у вас будет вывод:
где мы сейчас находимся на второй странице.
ТОГДА вы можете указать, является ли класс «номер ссылки-страницы» дочерним элементом ссылки или нет.
Во-первых, вам нужно предоставить класс CSS для таргетинга, что вы можете сделать, используя аргументы самого
wp_link_pages()
себя:Теперь просто стилизуйте
.link-pages
класс. Вот что я использую:Стиль в соответствии с вашими потребностями, конечно.
@toscho спасибо за пост, он очень помог! Я пошел немного дальше и добавил теги элементов списка к обоим выходным данным, чтобы мне было проще стилизовать его.
Я вставляю этот хак в ваш код, так как он может кому-то помочь.
Камило
Текущую страницу можно пометить с помощью WP-фильтра.
wp_link_pages_link
Используемый фильтрwp_link_pages()
получает элемент ссылки, который представляет собой один номер для текущей страницы и якорь для других страниц. Итак, мы можем проверить, является ли элемент числом, и обернуть его в диапазон:Конечно, при условии, что вы еще не фильтруете ссылки таким образом, что текущая страница больше не является одним числом. Затем вы можете стилизовать его с помощью
current
класса.