我为image widget添加了一个自定义模板,该模板在functions.php中定义:
myappService.callBancor = function (credentials, actionUrl) {
var reqq = $http({
url: "http://localhost/NewBancorScanner/api/" + actionUrl,
method: "GET",
contentType: "application/json",
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'
}
});
return reqq;
};
此模板的内容(image-widget-custom.php)如下所示:
add_filter('sp_template_image-widget_widget.php','my_template_filter');
function my_template_filter($template) {
return get_template_directory() . '/widget-templates/image-widget-custom.php';
}
唯一的问题是,我希望为特定的小部件区域格式化小部件,而不是在wordpress网站上使用它的任何地方。我想要应用模板的区域在页脚中:
<?php
/**
* Widget template. This template can be overriden using the "sp_template_image-widget_widget.php" filter.
* See the readme.txt file for more info.
*/
// Block direct requests
if ( !defined('ABSPATH') )
die('-1');
echo '<div class="col-sm-3 footer-blocks">';
echo $before_widget;
$output = "";
$output .= '<a href="' . $instance[link] . '">';
$output .= '<div class="hover-wrapper">';
$output .= '<div class="hover-inner">';
$output .= '<div class="hover-border">';
$output .= '<h2 class="text-uppercase">' . $instance[title] . '</h2>';
$output .= '</div>';
$output .= '</div>';
$output .= '<img class="img-responsive" src="' . $instance[imageurl] . '" alt="Footer image">';
$output .= '</div>';
$output .= '</a>';
echo $output;
echo $after_widget;
echo '</div>';
?>
这可能吗?
答案 0 :(得分:1)
是的,这是可能的。
一种方法 - 假设您可以修改主题模板文件 - 是在侧边栏调用之前添加过滤器,然后在侧边栏调用之后删除过滤器。
删除主题文件中的add_filter
,然后修改代码,如下所示:
<?php
// Add the filter just before the sidebar is called
add_filter('sp_template_image-widget_widget.php','my_template_filter');
// Call the sidebar, which will use your custom template
dynamic_sidebar( 'footer-blocks' );
// Remove the filter to ensure any other sidebars do not use custom template
remove_filter('sp_template_image-widget_widget.php','my_template_filter');
?>
请注意,remove_filter将确保不会使用您的自定义模板过滤对窗口小部件的任何其他调用。
替代方法(首选/更好):
更多&#34; WordPress方式&#34;这样做是为了利用dynamic_sidebar_before
和dynamic_sidebar_after
函数,这样做可以检查正在加载哪个侧边栏,并且只为正确的侧边栏添加过滤器(S)。这段代码将放在你主题的functions.php文件中:
add_action( 'dynamic_sidebar_before', 'my_sidebar_checker', 10, 2);
add_action( 'dynamic_sidebar_after', 'my_sidebar_checker_after', 10, 2);
function my_sidebar_checker( $index, $bool ) {
if ( 'footer-blocks' == $index ) {
// Add the filter just before the sidebar is called
add_filter('sp_template_image-widget_widget.php','my_template_filter');
}
}
function my_sidebar_checker_after( $index, $bool ) {
if ( 'footer-blocks' == $index ) {
// Remove the filter to ensure any other sidebars do not use custom template
remove_filter('sp_template_image-widget_widget.php','my_template_filter');
}
}