Intereting Posts
Эхо Постоянная ссылка в приложении вне цикла? Добавление содержимого с помощью <! – nextpage ->, сломанного в 4.4 tiny_mce_before_init предотвращает появление значка пользовательского ярлыка Используйте фильтр содержимого на почте, защищенной паролем. Выполнение действия POST на главной странице отправляется на страницу сообщений Понимание конкретного кода Удалить тег из поддержки темы Использование ob_get_content для get_search_form помещается в бесконечный цикл Странная ошибка при сохранении почты / страницы Удаление вложений с лицевой стороны У меня есть 2 типа сообщений, я должен показать содержимое типа сообщения в двух блоках выбора WP_Query orderby не работает с пользовательским post_type Отображать метабокс, если отмечен флажок Перенаправить «http://old.net/category/postname» на «https://new.com/postname»? Новый шаблон блога для отображения только одной категории

плагин перезаписывает файл другого плагина-.php

Я работаю в шинной компании, и я пишу два плагина.

Первый плагин – показать литые диски. Второй плагин – показывать шины.

Оба плагина входят в качестве персонализированного типа «колеса» и «шины», и оба плагина имеют в себе шаблонную логику (шаблоны / archive-wheels.php и templates / archive-tires.php)

Моя проблема: когда оба плагина активны, плагин колес перезаписывает страницу с архивами шин, и я не знаю, почему на самом деле это делается.

Я действительно пытался избежать конфликтов пространства имен заранее, используя другие имена функций, другие префиксы и т. Д.

Вот соответствующий код для регистрации CPT и логики шаблона для обоих плагинов:

Регистрация Тип персонализированного типа:

function rg_wp_wheels_register_cpt(){ // Custom Post Type Name $cpt_name = 'wheels'; // CPT Features $cpt_features = array( 'title', 'revisions' ); // Slug for archive page $cpt_slug = 'designs'; $labels = array( 'name' => __('Wheels', 'rg-wp-wheels'), 'singular_name' => __('Wheel', 'rg-wp-wheels'), 'menu_name' => __('Wheels', 'rg-wp-wheels'), 'name_admin_bar' => __('Wheel', 'rg-wp-wheels'), 'all_items' => __('Designs', 'rg-wp-wheels'), // Archive Page Name 'add_name' => __('Add new wheel', 'rg-wp-wheels'), 'add_new_item' => __('Add new wheel', 'rg-wp-wheels'), 'edit' => __('Edit wheel', 'rg-wp-wheels'), 'edit_item' => __('Edit wheel', 'rg-wp-wheels'), 'new_item' => __('New wheel', 'rg-wp-wheels'), 'view' => __('View', 'rg-wp-wheels'), 'view_item' => __('View', 'rg-wp-wheels'), 'search_items' => __('Search ', 'rg-wp-wheels'), 'parent' => __('Parent', 'rg-wp-wheels'), 'not_found' => __('No wheels found', 'rg-wp-wheels'), 'not_found_in_trash' => __('No wheels found in Trash', 'rg-wp-wheels') ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'exclude_from_search' => false, 'show_in_nav_menus' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_admin_bar' => true, 'menu_position' => 21, 'menu_icon' => 'dashicons-marker', 'can_export' => true, 'delete_with_user' => false, 'hierarchical' => false, 'has_archive' => true, 'query_var' => true, 'capability_type' => 'post', 'map_meta_cap' => true, // 'capabilities' => array(), 'rewrite' => array( 'slug' => $cpt_slug, 'with_front'=> true, 'pages' => true, 'feeds' => false ), 'supports' => $cpt_features ); register_post_type($cpt_name, $args); } add_action('init', 'rg_wp_wheels_register_cpt'); 

Шаблон логики для плагинов колес

 функция rg_wp_wheels_template_logic ($ original_template) {
     $ post_type = get_post_type ();

     if (is_archive () || is_search () && $ post_type == 'wheels') {

         if (file_exists (get_template_directory_uri (). '/archive-wheels.php')) {
             return get_template_directory_uri ().  '/archive-wheels.php';
         } else {
             return plugin_dir_path (__ FILE__).  'Шаблоны / архив-wheels.php';
         }

     } elseif (is_single () && $ post_type == 'wheels') {

         if (file_exists (get_template_directory_uri (). '/single-wheels.php')) {
             return get_template_directory_uri ().  '/single-wheels.php';
         } else {
             return plugin_dir_path (__ FILE__).  «Шаблоны / одного wheels.php»;
         }

     }

     return $ original_template;
 }
 add_action ('template_include', 'rg_wp_wheels_template_logic');

Зарегистрируйте шины пользовательского типа Post:

 функция rg_wp_tires_register_cpt () {

     // Имя пользовательского типа сообщения
     $ cpt_name = 'шины';
     // Возможности CPT
     $ cpt_features = array (
         'заглавие',
         «изменения»
     );
     // Слиз
     $ cpt_slug_tires = 'profiles';
     $ labels = array (
         'name' => __ ('Шины', 'rg-wp-tyres'),
         'unique_name' => __ ('Tire', 'rg-wp-tyres'),
         'menu_name' => __ ('Шины', 'rg-wp-tyres'),
         'name_admin_bar' => __ ('Шины', 'rg-wp-tyres'),
         'all_items' => __ ('Профили', 'rg-wp-tyres'), // Название архивной страницы
         'add_name' => __ ('Добавить новую шину', 'rg-wp-tyres'),
         'add_new_item' => __ ('Добавить новую шину', 'rg-wp-tyres'),
         'edit' => __ ('Edit tire', 'rg-wp-tyres'),
         'edit_item' => __ ('Edit tire', 'rg-wp-tyres'),
         'new_item' => __ ('Новая шина', 'rg-wp-tyres'),
         'view' => __ ('View', 'rg-wp-tyres'),
         'view_item' => __ ('View', 'rg-wp-tyres'),
         'search_items' => __ ('Поиск', 'rg-wp-tyres'),
         'parent' => __ ('Parent', 'rg-wp-tyres'),
         'not_found' => __ ('Нет шин найдено', 'rg-wp-tyres'),
         'not_found_in_trash' => __ ('Нет шин, найденных в корзине,' rg-wp-tyres ')
     );

     $ args = array (
         'labels' => $ labels,
         'public' => true,
         'publicly_queryable' => true,
         'exclude_from_search' => false,
         'show_in_nav_menus' => true,
         'show_ui' => true,
         'show_in_menu' => true,
         'show_in_admin_bar' => true,
         'menu_position' => 22,
         'menu_icon' => 'dashicons-marker',
         'can_export' => true,
         'delete_with_user' => false,
         'hierarchical' => false,
         'has_archive' => true,
         'query_var' => true,
         'capability_type' => 'post',
         'map_meta_cap' => true,
         // 'capability' => array (),
         'rewrite' => array (
             'slug' => $ cpt_slug_tires,
             'with_front' => true,
             'pages' => true,
             'feeds' => false
         ),
         'поддерживает' => $ cpt_features
     );
     register_post_type ($ cpt_name, $ args);
 }
 add_action ('init', 'rg_wp_tires_register_cpt');

Логика шаблонов для плагина шины :

 функция rg_wp_tires_template_logic ($ original_template) {
     $ post_type = get_post_type ();

     if (is_archive () || is_search () && $ post_type == 'tyres') {

         if (file_exists (get_template_directory_uri (). '/archive-tires.php')) {
             return get_template_directory_uri ().  '/archive-tires.php';
         } else {
             return plugin_dir_path (__ FILE__).  'Шаблоны / архив-tires.php';
         }

     } elseif (is_single () && $ post_type == 'tyres') {

         if (file_exists (get_template_directory_uri (). '/single-tires.php')) {
             return get_template_directory_uri ().  '/single-tires.php';
         } else {
             return plugin_dir_path (__ FILE__).  «Шаблоны / одного tires.php»;
         }

     }

     return $ original_template;
 }
 add_action ('template_include', 'rg_wp_tires_template_logic');

Когда я деактивирую плагин для колес, логика шаблона плагина шины работает отлично. Когда оба плагина активны, архив-wheels.php ВСЕГДА перезаписывает архив-tire.php. Зачем?

Пожалуйста, помогите мне, я схожу с ума по этому поводу.

Solutions Collecting From Web of "плагин перезаписывает файл другого плагина-.php"

Основной вкладчик пощадил меня – и ответ:

$post_type = get_post_type('tires') – не правильный метод, чтобы получить тип сообщения надежным способом.

Вместо этого вам нужно использовать is_post_type_archive («шины»)

Правильная функция выглядит так:

// Template Logic function rg_wp_tires_template_logic($original_template) { if(is_post_type_archive('tires') || (is_search() && $_GET['post_type'] === 'tires')) { if(file_exists(get_template_directory_uri() . '/archive-tires.php')) { return get_template_directory_uri() . '/archive-tires.php'; } else { return plugin_dir_path(__FILE__) . 'templates/archive-tires.php'; } } elseif(is_singular('tires')) { if(file_exists(get_template_directory_uri() . '/single-tires.php')) { return get_template_directory_uri() . '/single-tires.php'; } else { return plugin_dir_path(__FILE__) . 'templates/single-tires.php'; } } return $original_template; } add_action('template_include', 'rg_wp_tires_template_logic');
// Template Logic function rg_wp_tires_template_logic($original_template) { if(is_post_type_archive('tires') || (is_search() && $_GET['post_type'] === 'tires')) { if(file_exists(get_template_directory_uri() . '/archive-tires.php')) { return get_template_directory_uri() . '/archive-tires.php'; } else { return plugin_dir_path(__FILE__) . 'templates/archive-tires.php'; } } elseif(is_singular('tires')) { if(file_exists(get_template_directory_uri() . '/single-tires.php')) { return get_template_directory_uri() . '/single-tires.php'; } else { return plugin_dir_path(__FILE__) . 'templates/single-tires.php'; } } return $original_template; } add_action('template_include', 'rg_wp_tires_template_logic'); 

Я действительно надеюсь, что это поможет кому-то в будущем.