Intereting Posts
Теги WordPress как twitter sharer URL hastags Крючок после wp_enqueue_scripts Пользовательская категория типа сообщения в постоянной ссылке Функция для извлечения содержимого блога через RSS-канал Содержимое страницы WordPress вне WordPress Как удалить функциональность «Featured image» из пользовательского типа сообщения? Есть ли веская причина для двух файлов CSS для @import друг друга? Остановить выполнение цикла foreach, который извлекает данные из массива? Как правильно избежать переменных запроса, которые будут использоваться в WP_Query Могу ли я оставить плагин textdomain для терминов, используемых в ядре? Как отключить WordPress от создания эскизов? Я хочу минимизировать тег в wordpress Показать мета-поля типа персонализированного сообщения только на странице Редактировать Что может быть неправильным, когда автоматические резервные копии перестают быть отправленными по электронной почте? Установка данных WordPress Theme Unit

плагин перезаписывает файл другого плагина-.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. Зачем?

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

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

$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'); 

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