Intereting Posts
Социальные иконки Jetpack в других местах на сайте Как устаревать устаревшую версию API? Многостраничная настройка WordPress на промежуточном сервере Ошибка WordPress 3.0 PHP – уведомление WordPress_product_Type было вызвано неправильно Является ли get_posts () более эффективным, чем The Loop? Вставка нескольких сообщений в одном сообщении Slug Taken, Cant Найти какую страницу Несколько сообщений фильтра AJAX на клике по категории Пользовательский тип сообщения с включенными настраиваемыми полями, есть ли способ установить группу файлов по умолчанию? Пользовательский запрос таксономии сломан после обновления до 4.4 Прикрепите частную функцию к крюку? Фильтр-крюк, возвращающийся пустой при использовании дважды Изменение поведения в зависимости от длины содержимого как изменить шаблон пользовательского типа поиска для вывода результатов поиска в posttype-archive.php Я регистрирую и устанавливаю таблицу стилей, но ничего не отображается

Запрос сообщений по таксономии с сайта альтернативной сети

У меня 5 сетевых сайтов в моей многострочной настройке WordPress.

Одним из них является «первичный веб-сайт», на который будут извлекаться остальные остальные сетевые сайты.

В настоящее время я использую WP_Query(); для получения сообщений и switch_to_blog() / restore_current_blog(); до и после вызова WP_Query(); если текущий сайт не является основным сайтом.

Сообщения, полученные с основного сайта, извлекаются просто отлично.

Когда я перехожу на какой-либо другой сайт в сети, который НЕ является основным сайтом, он должен переключиться на основной сайт, получить сообщения из пользовательского типа сообщений и пользовательскую таксономию. Когда сообщения будут найдены, восстановите текущий блог.

Однако на подсайтах возвращаются сообщения ZERO. Я подумал, что это странно. Поэтому я сбросил / сравнил результаты с WP_Query(); на основном сайте и на любом из подсайтов.

В частности, отмечая часть request запрашиваемого объекта.

Запрос на первичный веб-сайт:

 [request] => SELECT SQL_CALC_FOUND_ROWS ples_posts.ID FROM ples_posts INNER JOIN ples_term_relationships ON (ples_posts.ID = ples_term_relationships.object_id) WHERE 1=1 AND ( ples_term_relationships.term_taxonomy_id IN (16) ) AND ples_posts.post_type = 'mbe-sales-listings' AND ((ples_posts.post_status = 'publish')) GROUP BY ples_posts.ID ORDER BY ples_posts.post_date DESC LIMIT 0, 5 

Запросить, если на каком-либо подсайте:

 [request] => SELECT SQL_CALC_FOUND_ROWS ples_posts.ID FROM ples_posts WHERE 1=1 AND 0 = 1 AND ples_posts.post_type = 'mbe-sales-listings' AND ((ples_posts.post_status = 'publish')) GROUP BY ples_posts.ID ORDER BY ples_posts.post_date DESC LIMIT 0, 4 

Посты на странице предназначены для разных, поэтому это не имеет значения.

Дело в том, что когда запрос запрашивается с любого из подсайтов, он, похоже, запрашивает тип пользовательского сообщения, но даже не рассматривает обычную таксономию.

Заметка:

Тип персонализированного сообщения и все пользовательские таксономии для этого настраиваемого типа сообщений регистрируются только на основном сайте.

При регистрации типа персонализированного сообщения и всех пользовательских таксономий для этого настраиваемого типа сообщений на всех подсайтах он также извлекает сообщения по назначению.

Я особо не хочу регистрировать пользовательский тип сообщения или любые пользовательские таксономии на любом из подсайтов. Я хочу, чтобы они были зарегистрированы на основном сайте.

Теперь, когда вы знаете сложную историю, здесь возникает вопрос …

Есть ли способ, которым я могу иметь только пользовательский тип сообщения и все пользовательские таксономии, зарегистрированные на основном сайте, и все еще иметь возможность получать необходимые сообщения с любого из подсайтов?

Я предполагаю, что это возможно с помощью специального $wpdb; запрос и НЕ использовать с помощью switch_to_blog(); , WP_Query(); , и restore_current_blog(); ,

Если это возможно, используя специальный $wpdb; запрос, я был бы признателен за руководство по безопасному и правильному SQL-запросу, чтобы сделать это. Я просто хочу запросить все опубликованные сообщения с указанного идентификатора сайта, типа сообщения и таксономии / срока.

Подумав, я придумал возможное «решение». Однако это был не тот путь, который я надеялся взять.

Тип пользовательских сообщений и все пользовательские таксономии для этого настраиваемого типа сообщений должны быть зарегистрированы на всех сетевых сайтах для WP_Query(); для получения сообщений с основного сайта с любого из подсайтов в сети.

По крайней мере, как временное решение, я указал следующие параметры, чтобы помочь «скрыть» пользовательские типы сообщений и пользовательские таксономии с субсайтов.

Во-первых, я указал две глобальные переменные для использования через мой плагин. Один для основного идентификатора сайта, а другой для текущего идентификатора сайта. Затем эти переменные могут быть глобализованы в любые методы или функции класса.

 $GLOBALS['mbe_primary_site_id'] = 1; $GLOBALS['mbe_current_site_id'] = get_current_blog_id(); 

При регистрации настраиваемого типа сообщений … Я добавил чек и изменил некоторые аргументы регистрации типа записи.

 global $mbe_primary_site_id, $mbe_current_site_id; if($mbe_current_site_id != $mbe_primary_site_id){ $args['show_ui'] = false; $args['public'] = false; $args['show_in_menu'] = false; } 

При регистрации пользовательских таксономий … Я добавил чек и изменил некоторые аргументы регистрации таксономии.

 global $mbe_primary_site_id, $mbe_current_site_id; if($mbe_current_site_id != $mbe_primary_site_id){ $args['show_ui'] = false; $args['public'] = false; } 

Итак, теперь я могу запрашивать сообщения по таксономии с основного сайта на любом из switch_to_blog($mbe_primary_site_id); таких как: switch_to_blog($mbe_primary_site_id); , WP_Query(...); , и restore_current_blog();

Я не знаю, существует ли здесь реальный солидный способ. Я знаю, что этот метод работает, и если вы должны сделать это через $wpdb; запросов, была бы довольно условная логика и проверки, особенно если вы планируете разбивать страницы на страницы.

Было бы $wpdb; и много дополнительной работы использовать $wpdb; для всего, когда вы можете просто зарегистрировать пользовательские типы сообщений и пользовательские таксономии на подсайтах, а также просто скрыть доступ к ним на субсайтах.