Я могу легко включить свои пользовательские типы сообщений в свой основной цикл, внеся небольшие корректировки с помощью query_posts()
, но я не уверен, как мне включить пользовательские типы сообщений в виджет боковой панели «Последние сообщения» (или любой другой виджеты, если уж на то пошло).
Как мне расширить область действия «Последние сообщения», чтобы включить больше, чем просто собственный тип сообщений?
Никогда не используйте query_posts()
Вместо переименования виджета, я думаю,
unregister_widget
было бы лучше сделать виджет по умолчанию перед регистрацией нового (меньше путаницы в админке).Да, вы можете использовать
unregister_widget
, но этот метод дает вам доступ к обоим, если вы хотите использовать оба (например, иметь виджет « Последние сообщения » для отображения последних сообщений в блоге и виджет « Последние обзоры фильмов» для отображения только последних записей определенного пользовательского типа сообщений)..просто примечание для тех, кто пробует приведенный выше код: не забудьте добавить это: register_widget(‘WP_Widget_My_Custom_Recent_Posts’);
Спасибо за предоставленный код для пользовательского класса виджета и за пояснения. Пришло очень полезно. Однако я просто бродил, если бы я мог изменить его, чтобы разрешить встроенный HTML в поле заголовка? По сути, мне нужно превратить заголовок виджета в интерактивную ссылку, но по умолчанию встроенный HTML удаляется из заголовков виджетов. Любая помощь приветствуется.
Я ничего не знаю о PHP, но нельзя ли просто
Extend
класс по умолчанию и обновить необходимые переменные? Вместо полного вырезания и вставки?Точно мои мысли… но я уже был на полпути к написанию своего ответа, когда вы опубликовали это…
Ваш очень полный! +1
Вам придется отредактировать код виджета « Последние сообщения » или создать собственную версию на основе значения по умолчанию. Код находится в
wp-includes/default-widgets.php
файле около строки 513. Но, поскольку вам никогда не следует вносить изменения в ядро, я бы порекомендовал скопировать код, чтобы создать свой собственный виджет «Мои пользовательские последние сообщения » и использовать его на своем сайте. Просто поместите новый класс виджета вfunctions.php
файл вашей темы или используйте его в плагине.Единственная реальная модификация, которую вам нужно внести, — это имя класса виджета и инкапсулированные функции и параметры (чтобы не возникало конфликтов имен с исходным виджетом « Последние сообщения ». После этого вам нужно будет отредактировать вызов
WP_Query
вwidget()
конструктор, чтобы он включал ваш пользовательский тип записи.Для этого примера я установил
post_type
равнымarray('post, 'page', 'custom-post-type')
… вам нужно будет изменить его, чтобы он соответствовал вашему конкретному варианту использования.Вот полный код виджета для справки:
Начиная с версии 3.6 вы можете использовать следующий код для изменения используемого запроса:
Просто добавьте нужные типы в массив для post_type, и они должны появиться.
Обновление: Согласно http://core.trac.wordpress.org/ticket/16159, это доступно с версии 3.4.
Я только что наткнулся на отличный плагин, в котором уже проделана тяжелая работа, и у него отличная документация и авторская поддержка. Я действительно был впечатлен.
Он позволяет переопределять WP_Query (позволяя вам фильтровать пользовательские типы сообщений и все, что вы хотите) и некоторые четкие инструкции о том, как его использовать.
Документация http://www.pjgalbraith.com/2011/08/recent-posts-plus/
URL плагина WordPress http://wordpress.org/extend/plugins/recent-posts-plus/
Сделал мою работу намного короче!
Вы можете скопировать код виджета (см. /wp-includes/default-widgets.php) и изменить строку запроса.
Я также создал для этого плагин виджета, который более настраиваемый, чем виджет «Последние сообщения». Если интересно, вы можете скачать его здесь http://new2wp.com/pro/latest-custom-post-type-posts-sidebar-widget/
Этот код создает новый виджет последних сообщений, который включает ваши CPT.
При расширении собственного виджета последних сообщений необходимо выполнить 2 шага:
я. Создайте новый класс для вашего пользовательского виджета последних сообщений, который вы можете сделать, скопировав и переименовав код виджета последних сообщений из defaults-widgets.php в папке wp-includes.
II. Затем вам также нужно будет зарегистрировать новый виджет, и вы можете отменить регистрацию собственного виджета последних сообщений или использовать оба.
Весь код можно просто скопировать в файл функций с помощью дочерней темы или создать другой файл и включить его в файл функций дочерней темы.
Зарегистрируйте новый пользовательский виджет последних сообщений
Код включает модифицированный WP_Query, который включает в себя массив для типов сообщений, включая CPT портфолио, который вы можете переименовать, чтобы он соответствовал вашему пользовательскому типу сообщений.
Вот строка кода, которую нужно изменить:
На дворе 2020 год, и я пришел сюда, чтобы найти решение проблемы «10 самых последних пользовательских сообщений типа XYZ». Я нашел плагин , который делает это и многое другое.
Виджеты пользовательских типов сообщений расширяют обычные функциональные возможности стандартных сообщений виджета (самые последние, ежемесячные архивы, используемые категории, последние комментарии, поиск, календарь) до пользовательских типов сообщений.
Вы выбираете нужный виджет (в моем случае «самый последний»), и сначала вы получаете выбор, в котором вы указываете настраиваемый тип сообщения, на который должен ориентироваться виджет. Выбор по умолчанию — старый добрый «пост», поэтому этот плагин является заменой ванильных виджетов WP, связанных с постами.