cleanup после after_setup_theme и wp_head

Вопрос или проблема

cleanup после after_setup_theme и wp_head

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

В данный момент у меня есть этот код:

add_action('after_setup_theme', 'rm_theme_setup');

// начало настройки темы
function rm_theme_setup() {
    add_action('init', 'rm_head_cleanup'); // * 1) вызов функции ниже
    add_action('wp_head', 'rm_remove_recent_comments_style', 1);
    add_filter('gallery_style', 'rm_remove_gallery_style');

    rm_add_theme_support(); // * 2) вызов функции для добавления поддержки темы
}

1) Это часть очистки wp_head: В основном я вызываю эту функцию в функции theme_setup выше. Это правильный способ делать вещи?

function rm_head_cleanup() {
    remove_action('wp_head', 'feed_links_extra', 3);
    remove_action('wp_head', 'feed_links', 2);
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    remove_action('wp_head', 'index_rel_link');
    remove_action('wp_head', 'parent_post_rel_link', 10, 0);
    remove_action('wp_head', 'start_post_rel_link', 10, 0);
    remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
    remove_action('wp_head', 'wp_generator');
    remove_action('wp_head', 'wp_shortlink_wp_head');
    add_filter('style_loader_src', 'rm_remove_wp_ver_css_js');
    add_filter('style_loader_tag', 'rm_clean_style_tags');
    add_filter('script_loader_src', 'rm_remove_wp_ver_css_js');
}

2) Затем позже в коде у меня есть эта функция, для добавления поддержки темы. Когда вы проверяете функцию настройки темы, я просто делаю это: rm_add_theme_support();. Это правильный способ делать это, или мне стоит просто скопировать всё из этой функции и вставить в theme_setup?

function rm_add_theme_support() {
add_theme_support('post-thumbnails');

// удаление стандартных миниатюр
update_option('thumbnail_size_h', 0);
update_option('thumbnail_size_w', 0);
update_option('medium_size_h', 0);
update_option('medium_size_w', 0);
update_option('large_size_h', 0);
update_option('large_size_w', 0);

// set_post_thumbnail_size(200, 200, true);
add_image_size('rm-slide', 960, 500);
add_image_size('rm-service-image', 380, 9999);
add_image_size('rm-service-thumbnail', 80, 60, true);

add_theme_support('menus');

register_nav_menus(
    array(
        'main-nav' => 'Главное меню'
    )
);

}

Спасибо за помощь, надеюсь, что это не слишком много кода.

Что вам следует сделать:

  • Прочитайте Где положить мой код: плагин или functions.php? и примените уроки к вашей теме.

    Темы предназначены только для представления. Удалите всё, что не связано с представлением: не трогайте link и meta элементы в заголовке. Это территория плагинов.

  • Удалите избыточный код. add_theme_support('menus'); не нужен, если вы вызываете register_nav_menus(). update_option() не должно вызываться при каждой загрузке страницы. Сначала проверьте существующие опции и изменяйте их только в случае необходимости.

  • add_theme_support('post-thumbnails'); сомнительно, если вы убираете размеры миниатюр. Почему бы вам просто не изменить его на 80x60? Тогда миниатюры всё равно будут доступны после переключения темы. Это можно сделать с другими размерами тоже.

должен ли я просто скопировать всё из этой функции и вставить в theme_setup?

Нет, держите отдельные задачи в отдельных функциях или классах. Не смешивайте разные задачи только для экономии строк кода. Проще отключить определённые функции с помощью плагина, следуя правилу Разделение обязанностей. rm_add_theme_support() уже делает слишком много, потому что меню не связано с размерами изображений.

Ответ или решение

Конечно, давайте разберем этот вопрос более детально.

Чистка после after_setup_theme и wp_head

1. Правильная реализация очищения wp_head

Вызывая rm_head_cleanup() в функции rm_theme_setup(), вы делаете это в правильном контексте, однако лучше было бы напрямую привязать очистку в момент инициализации, а не внутри функции настройки темы. Например, вы можете вызвать rm_head_cleanup сразу же при помощи add_action('init', 'rm_head_cleanup'); вне rm_theme_setup. Это повысит читаемость и разграничит задачи.

Вот пример в улучшенном виде:

add_action('init', 'rm_head_cleanup');

function rm_head_cleanup() {
    remove_action('wp_head', 'feed_links_extra', 3);
    remove_action('wp_head', 'feed_links', 2);
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    remove_action('wp_head', 'index_rel_link');
    remove_action('wp_head', 'parent_post_rel_link', 10, 0);
    remove_action('wp_head', 'start_post_rel_link', 10, 0);
    remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
    remove_action('wp_head', 'wp_generator');
    remove_action('wp_head', 'wp_shortlink_wp_head');
    add_filter('style_loader_src', 'rm_remove_wp_ver_css_js');
    add_filter('style_loader_tag', 'rm_clean_style_tags');
    add_filter('script_loader_src', 'rm_remove_wp_ver_css_js');
}

2. Поддержка тем и использование функций

Что касается вашей функции rm_add_theme_support(), она не должна быть скопирована в rm_theme_setup. Вместо этого лучше оставить их отдельными. Это позволит лучше управлять кодом и вносить изменения в конкретные особенности темы без необходимости отслеживать все функции.

В качестве улучшения кода можно сделать следующее:

  1. Уберите вызов update_option() из функции и переместите это в инициализацию темы, если вы уверены, что вам нужно изменить размеры изображений только один раз.
  2. Существует хорошая практика: избегать включения и отключения функций в зависимости от условий, если это не необходимо.

Важно отметить, что если вы удаляете стандартные размеры миниатюр, рассмотрите возможность изменения значения параметров для add_image_size() вместо того, чтобы полностью их удалять. Это позволит сохранить совместимость при смене темы.

Итоговый код:

Вот реорганизованный код для лучшего управления:

function rm_theme_setup() {
    rm_add_theme_support();
}

// Добавление поддержки темы
function rm_add_theme_support() {
    add_theme_support('post-thumbnails');
    add_image_size('rm-slide', 960, 500);
    add_image_size('rm-service-image', 380, 9999);
    add_image_size('rm-service-thumbnail', 80, 60, true);

    register_nav_menus(array(
        'main-nav' => 'Главное меню'
    ));
}

add_action('after_setup_theme', 'rm_theme_setup');
add_action('init', 'rm_head_cleanup');

function rm_head_cleanup() {
    remove_action('wp_head', 'feed_links_extra', 3);
    remove_action('wp_head', 'feed_links', 2);
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    remove_action('wp_head', 'index_rel_link');
    remove_action('wp_head', 'parent_post_rel_link', 10, 0);
    remove_action('wp_head', 'start_post_rel_link', 10, 0);
    remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
    remove_action('wp_head', 'wp_generator');
    remove_action('wp_head', 'wp_shortlink_wp_head');
    add_filter('style_loader_src', 'rm_remove_wp_ver_css_js');
    add_filter('style_loader_tag', 'rm_clean_style_tags');
    add_filter('script_loader_src', 'rm_remove_wp_ver_css_js');
}

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...