Сделать шаблон переопределения плагина
есть ли способ переопределить шаблон wordpress плагином?
Я хотел бы сделать целевую страницу. Если плагин обнаруживает некоторые запросы GET или POST, он должен переопределить тему wordpress и показать свою собственную.
Это будет как-то так:
if (isset($_GET['action']) && $_GET['action'] == 'myPluginAction'){
/* do something to maintain action */
/* forbid template to display and show plugin's landing page*/
}
Я знаком с Кодексом WP, но я не помню, есть ли какая-либо функция для этого. Конечно, я погуглил его безрезультатно.
Спасибо за любые идеи заранее.
2 ответов
вам нужен крючок template_include
. Это не кажется документированным в кодексе, но вы можете найти больше примеров здесь в SO или в Клиент StackExchange Вордпресс
plugin файл
<?php
/**
* Plugin Name: Landing Page Custom Template
*/
add_filter( 'template_include', 'so_13997743_custom_template' );
function so_13997743_custom_template( $template )
{
if( isset( $_GET['mod']) && 'yes' == $_GET['mod'] )
$template = plugin_dir_path( __FILE__ ) . 'my-custom-page.php';
return $template;
}
пользовательский шаблон в папке плагина
<?php
/**
* Custom Plugin Template
* File: my-custom-page.php
*
*/
echo get_bloginfo('name');
результат
посещение любого url-адреса сайта с ?mod=yes
отобразит файл шаблона плагина, например:http://example.com/hello-world/?mod=yes
.
вы должны создать папку '/слайдер/' внутри папки плагинов, внутри купон, вам нужно добавить сказать, папок, электронной почты 'писем' и поставить нужный шаблон внутри '/письма/ переопределять. просто скопируйте этот код в main.php вашего плагина.
<?php
/**
* Plugin Name: Custom Plugin
*/
function myplugin_plugin_path() {
// gets the absolute path to this plugin directory
return untrailingslashit( plugin_dir_path( __FILE__ ) );
}
add_filter( 'woocommerce_locate_template', 'myplugin_woocommerce_locate_template', 10, 3 );
function myplugin_woocommerce_locate_template( $template, $template_name, $template_path ) {
global $woocommerce;
$_template = $template;
if ( ! $template_path ) $template_path = $woocommerce->template_url;
$plugin_path = myplugin_plugin_path() . '/woocommerce/';
// Look within passed path within the theme - this is priority
$template = locate_template(
array(
$template_path . $template_name, $template_name
)
);
// Modification: Get the template from this plugin, if it exists
if ( ! $template && file_exists( $plugin_path . $template_name ) )
$template = $plugin_path . $template_name;
// Use default template
if ( ! $template )
$template = $_template;
// Return what we found
return $template;
}
?>
для справки переопределение шаблона с помощью плагина