Intereting Posts
Использование функции wordpress для извлечения данных Удалить из отрывка включая ошибку пути библиотеки Zend Gdata Опубликовать специальный текст на основе отображаемой категории Как я могу скрыть скрытый факт, что мой сайт работает в WordPress? Теги шаблона недоступны в реальных заданиях Cron Изменение формата даты публикации на ивритский календарь Использование пользовательской ширины для размеров изображения для дисплеев с высоким разрешением Контактная форма не отправляет электронную почту Бесконечная петля после обновления темы Genesis Как уведомить моих пользователей плагина о выпуске новой версии? Как отключить панель администратора для всех подписчиков? Как делиться многократными полями на нескольких страницах? call_user_func_array () после миграции сайта с помощью InstantWP Имейте сообщение WordPress перенаправить на url при вступлении в iPad (Safari)

Использование пользовательских таблиц для старых сообщений

У меня есть сайт с 24 000 сообщений и 200 сообщений ежедневно, и база данных скоро станет огромной. Поэтому я планирую перенести старые сообщения в пользовательские таблицы, чтобы уменьшить нагрузку на базу данных. Нет необходимости показывать эти сообщения на сайте. Я сохраню его для поисковых систем и избегаю проблем sql_calc_found_rows . Это три таблицы, которые я создал:

 wp_posts -> wp_custom_posts wp_postmeta -> wp_custom_postmeta wp_term_relationships -> wp_custom_term_relationships 

Я переместил старые сообщения в эти таблицы вручную, используя phpMyAdmin, и использую функцию, чтобы WordPress использовал мою таблицу сообщений вместо wp_posts если сообщение в ней не существует:

 function custom_prefix_change($sql) { global $wpdb,$wp; $prefix = $wpdb->prefix; if(is_single()){ //check if the post exists in the genuine posts table $results = $wpdb->get_results($sql,"ARRAY_A"); if($results[0]['ID']){ //if exists then return return $sql; }else{ //else change the query $sql = str_replace("$wpdb->posts","{$wpdb->prefix}custom_posts",$sql); } } //echo $sql; return $sql; } add_action('posts_request',"custom_prefix_change"); 

Тем не менее, мои старые должности в этом случае появляются без мета-и таксономических ценностей. Как я могу сделать то же самое с таблицами мета и отношений? Какие-либо предложения?

Solutions Collecting From Web of "Использование пользовательских таблиц для старых сообщений"

простое и не идеальное решение, которое сделает большую часть работы для вас, – это переписать имена таблиц следующим образом:

 function custom_prefix_change($sql) { global $wpdb,$wp; $prefix = $wpdb->prefix; if(is_single()){ //check if the post exists in the genuine posts table $results = $wpdb->get_results($sql,"ARRAY_A"); if($results[0]['ID']){ //if exists then return return $sql; }else{ //else change the query $sql = str_replace("$wpdb->posts","{$wpdb->prefix}custom_posts",$sql); $wpdb->term_relationships = $wpdb->prefix . 'custom_term_relationships'; $wpdb->postmeta = $wpdb->prefix . 'custom_postmeta'; } } return $sql; } 

Теперь для полного решения вам нужно будет заменить таблицы в terms_clauses hook для get_terms и получить метаданные из пользовательской таблицы самостоятельно, используя get_post_metadata для get_post_meta .