Intereting Posts
Как я могу предложить только предложить одну таксономию? Как я могу позиционировать кнопки ShareThis вручную при использовании подключаемого модуля? Должен ли я использовать дополнительный столбец в БД? Как проверить, является ли последний сегмент uri типом пользовательской почты или таксономией? Динамическая таксономия в permalink сделала все остальные должности НЕ НАЙДЕНЫ? Обновить сообщение meta не работает на wp_postmeta Должен ли я использовать _n для местоимений в переводе? Тематическая локализация «слизней» (пользовательские типы сообщений, таксономии) Почему переменная get_post_meta хранится в пустом? Отображать содержимое сообщения пользователю, когда его идентификатор пользователя === строка в заголовке сообщения Отобразить имя команды как полное имя Все страницы после уровня 1 показывают 404 после плагина миграции WordPress – как исправить? Параметры встраивания YouTube? Как добавить событие onclick в изображение виджета wp_nav_menu с WP как чистая CMS

Как добавить add_filter () в состояние, основанное на $ post data

Я пишу плагин с пользовательской страницей для отображения статистики пользователя: example.com/user/admin/ имеет настраиваемую структуру permalink, которая выводит читателя на страницу /user/ страницу и отображает данные для пользователя «admin». Между тем, example.com/user/ должен просто вернуть список всех зарегистрированных пользователей. То, что я сделал (работает), имеет код вроде этого:

 function user_heading_func($heading) { $post_slug=$post->post_name; if( $post->post_name != "user" || !in_the_loop() ){ // Do nothing } else if ($wp_query->query_vars["u"]) { // checks if user is defined in permalink $heading = "User data on "; $user = get_user_by("slug", $wp_query->query_vars["u"]); $heading .= "" . $user->data->user_login; } else { $heading = "User list"; } return $heading; } add_filter('the_title', 'user_heading_func'); 

А затем повторите почти идентичный код для других фильтров, таких как the_content и document_title_parts .

То, что я хочу знать, – это то, как я могу немного упростить это, имея фильтры в состоянии, а не условие в фильтрах. Что-то вроде этого:

 global $post; global $wp_query; if($post->post_name != "user"){ // Normal page // Do nothing } else if ($wp_query->query_vars["u"]) { // User page with defined user $user = get_user_by("slug",$wp_query->query_vars["u"]); $heading = "User data on ".$user->data->user_login; $name = $user->data->user_login; add_filter('document_title_parts', function($title){ // Edit the <title> tag $title["title"] = "(user)'s profile"; return $title; }); add_filter('the_title', function($head){ // Edit the <h1> tag $head = "(user)'s profile"; return $head; }); add_filter('the_content', function($content){ // Edit the main body content $content = "(user)'s profile data content goes here"; return $content; }); } else { // User page with no defined user // Similar to if ($wp_query->query_vars["u"]) but with different outputs }