Я пытаюсь написать плагин для WooCommerce ( https://github.com/bassjobsen/woocommerce-twitterbootstrap ). Я хочу, чтобы мои шаблоны загружались следующим образом:
Поэтому, когда шаблон не существует в папке темы, это загрузка из моей папки плагина (если существует) вместо папки Woocommece. На http://www.skyverge.com/blog/override-woocommerce-template-file-within-a-plugin/, если найдено рабочее решение для загрузки шаблонов с помощью woocommerce_get_template
. Но это не сработает для woocommerce_get_template_part
вызывать эту функцию вместо locate_template
вместо woocommerce_locate_template
(это ошибка?).
Вопрос: Я хочу знать, как перезаписывать / манипулировать locate_template()
поэтому locate_template()
пытаюсь загрузить файлы из моей папки плагина. Или любое другое решение для этого.
обновление благодаря шаблонам загрузки @jesper i cloud load:
function my_template_redirect(){ //pages you want to make true, ex. is_shop() global $woocommerce; if(is_shop()) { $plugin_dir = WP_PLUGIN_DIR.'/'.str_replace( basename( __FILE__), "", plugin_basename(__FILE__) ); var_dump($plugin_dir); load_template($plugin_dir . '/templates/archive-product.php'); } } add_action('template_redirect','my_template_redirect');
/templates/archive-product.php
включает content-product.php
из одного и того же файла шаблона плагина.content-product.php
использует global $product
который в этом случае является нулевым.Нужно ли загружать другую функцию для установки $product
?
Вышеупомянутая также дает мою другую ошибку: PHP Warning: call_user_func_array () ожидает, что параметр 1 будет действительным обратным вызовом, функция «woocommerce_before_main_content_grid» не найдена или недействительна имени функции в / home / bass / Dropbox / testomgeving / jamedotheme / wordpress / wp- включает / plugin.php
С приведенным выше кодом я мог бы написать функцию условного включения файлов в шаблоны / archive-product.php ( так решено! )
Я думаю, вы можете использовать действие перенаправления шаблонов .
Я не тестирую его, но он должен работать:
function my_template_redirect(){ //pages you want to make true, ex. is_shop() if(is_shop()) { $plugin_dir = WP_PLUGIN_DIR.'/'.str_replace( basename( __FILE__), "", plugin_basename(__FILE__) ); load_template($plugin_dir . 'your-template.php'); } } add_action('template_redirect','my_template_redirect');