Intereting Posts
генерировать уникальный слизнь при вставке сообщения Список категорий для пользовательских типов сообщений – WordPress Изображения не загружаются после миграции Добавление богатого текстового редактора в мой плагин Построение индексной страницы из настраиваемых полей Как загрузить тип файла prc? Могу ли я копировать роль администратора другому пользователю? неожиданный '$ mm' (T_VARIABLE) в wp-includes / functions.php Постоянная ссылка изменяется при редактировании опубликованной публикации в пользовательском типе сообщения Как создать несколько языковых маршрутов с правилами перезаписи или переписывать конечные точки? Изображение отображается только на одной странице, а не на блоге / домашней странице Как устранить ошибки при регистрации / пароле электронной почты? WP не регистрируется в первый раз Удалить дополнительные размеры изображения, созданные по теме "Uncaught SyntaxError: Неожиданный токен <" в load-scripts.php

плагин перезаписывает файл другого плагина-.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'); 

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