Удалить ненужный запрос Mysql

мои одиночные сообщения получают 31 запрос от mysql. Я проверил все запросы. Я видел этот запрос.

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

  Запрос: SELECT option_value FROM xy_options WHERE option_name = 'widget_pages' LIMIT 1
 Запрос: SELECT option_value FROM xy_options WHERE option_name = 'widget_calendar' LIMIT 1
 Запрос: SELECT option_value FROM xy_options WHERE option_name = 'widget_tag_cloud' LIMIT 1
 Запрос: SELECT option_value FROM xy_options WHERE option_name = 'widget_nav_menu' LIMIT 1

моя боковая панель здесь https://gist.github.com/4546327

Лучше всего я могу сказать, что эти виджеты по умолчанию получают опции из базы данных по мере их создания, поэтому нет возможности предотвратить запросы БД без полного отключения этих виджетов. В зависимости от ваших потребностей вам может потребоваться небольшая производительность и не нужны виджеты, и в этом случае вы можете использовать этот код для их отключения (место в functions.php):

 // Remove unneeded widgets that have undesirable query overhead add_action( 'widgets_init', 'remove_unneeded_widgets' ); function remove_unneeded_widgets() { unregister_widget('WP_Widget_Pages'); unregister_widget('WP_Widget_Calendar'); unregister_widget('WP_Widget_Tag_Cloud'); unregister_widget('WP_Nav_Menu_Widget'); } 

См. Здесь дополнительные имена классов виджетов по умолчанию: http://codex.wordpress.org/Function_Reference/unregister_widget

ОБНОВИТЬ:

Я сделал еще несколько исследований и обнаружил, что у этих четырех виджета нет каких-либо автоматически загруженных параметров, хотя у нескольких других виджетов есть автозагруженные параметры, установленные в функции wp_install_defaults() в /wp-admin/includes/upgrade.php . Это может быть недосмотр. В любом случае, если эти виджеты никогда не были загружены в боковую панель, родительский класс WP_Widget или класс виджетов никогда не имели возможности устанавливать значения по умолчанию. Другие виджеты построены и используют get_option() но не создают запрос, потому что они автоматически загружаются с множеством других параметров WordPress. У этих четырех нет автозагружаемых опций, поэтому get_option() должен запрашивать базу данных для каждого.

Самое простое решение – просто назначить значения по умолчанию, когда тема сначала активируется, например:

 // Clean up widget settings that weren't set at installation add_action( 'after_switch_theme', 'set_missing_widget_options' ); function set_missing_widget_options( ){ add_option( 'widget_pages', array ( '_multiwidget' => 1 ) ); add_option( 'widget_calendar', array ( '_multiwidget' => 1 ) ); add_option( 'widget_tag_cloud', array ( '_multiwidget' => 1 ) ); add_option( 'widget_nav_menu', array ( '_multiwidget' => 1 ) ); } 

С вашего взгляда на ваш код ваш sidebar.php довольно обширен и изменчив.

Параметры не загружаются непосредственно в ваш sidebar.php , я полагаю, они будут загружены в ваши виджеты, из которых у вас, похоже, есть несколько. Поскольку у вашей темы есть много доступных опций, вам необходимо загрузить все эти значения, чтобы обеспечить все функции.

Я настоятельно рекомендую не испортить код в этом случае, так как вы можете потерять функции, которые вам могут понадобиться позже, и 4 вызова get_option() которые вызывают указанный выше запрос, должны быть обработаны в get_option() сроки.