我试图将一个变量从一个函数(呈现一个短代码)传递到另一个将google字体排队的函数。我正在使用过滤器。由于函数连接到add_shortcode
, 我想我不能直接添加过滤器。
我正在使用中介函数。当我做print_r
对于中的中介函数wp_footer
, 它显示变量,但当我将其挂接到add_filter
,并将其打印到wp_footer
.
function first_shortcode( $atts , $content = null ) {
$atts = shortcode_atts(
array(
\'typography\' => \'\',
),
$atts
);
//Other shortcode stuffs
if ( $atts[\'typography\'] ) {
$typo = $atts[\'typography\'];
$font = array();
$font[\'family\'] = $typo[\'font\'];
$font[\'weight\'] = $typo[\'weight\'];
googlefont_filter_callback( $font );
}
}
add_shortcode( \'first\', \'first_shortcode\' );
function second_shortcode( $atts , $content = null ) {
$atts = shortcode_atts(
array(
\'typography\' => \'\',
),
$atts
);
//Other shortcode stuffs
if ( $atts[\'typography\'] ) {
$typo = $atts[\'typography\'];
$font = array();
$font[\'family\'] = $typo[\'font\'];
$font[\'weight\'] = $typo[\'weight\'];
googlefont_filter_callback( $font );
}
}
add_shortcode( \'first\', \'second_shortcode\' );
调解人职能:
function googlefont_filter_callback( $fonts=array() ) {
return $fonts;
}
add_filter( \'googlefont_loader\', \'googlefont_filter_callback\' );
以及将字体排队的功能:
function googlefont_loader( $fonts=array() ) {
$fonts = array();
$fonts = apply_filters( \'googlefont_loader\', $fonts );
$new_array = array();
foreach ($fonts as $font){
$new_value = !empty($new_array[$font[\'family\']]) ? $new_array[$font[\'family\']].\',\'.$font[\'weight\'] : $font[\'weight\'];
$new_array[$font[\'family\']] = $new_value;
}
/*
$out = \'\';
foreach( $new_array as $family => $weight ) {
$out .= $family . \':\' . $weight . \'|\';
}
if ( !empty($fonts) ) {
wp_register_style( \'purewpns-googlefonts\', \'//fonts.googleapis.com/css?family=\' . rtrim($out, \'|\') );
wp_enqueue_style( \'purewpns-googlefonts\' );
}
*/
echo \'<pre>\' . print_r( $fonts, true ). \'</pre>\';
}
add_action( \'wp_footer\', \'purewpns_googlefont_loader\' );
//add_action( \'wp_enqueue_scripts\', \'purewpns_googlefont_loader\' );
现在,回声进来了
googlefont_loader
返回空数组
Array
(
)
我做错了什么?或者,这是因为挂钩的发射时间?
SO网友:maheshwaghmare
我想从你的代码
add_action( \'wp_footer\', \'purewpns_googlefont_loader\' );
功能
purewpns_googlefont_loader 可能是打字错误。
使用动作wp_footer
并添加了空数组,可以明显打印空数组。
好的。您可以使用:
googlefont_filter_callback( $font );
除非
$fonts = apply_filters( \'googlefont_loader\', $fonts );
在功能中
googlefont_loader()
并在googlefont\\u filter\\u回调函数中添加过滤器,如下所示:
function googlefont_filter_callback( $fonts=array() ) {
return apply_filters( \'googlefont_loader\', $fonts );
}
现在,您可以从两个短代码中访问字体。
E、 g。
add_filter( \'googlefont_loader\' function( $fonts ) {
var_dump( $fonts);
return $fonts;
});
但它对两个短代码都有影响。您可以为每个短代码引入另一个单独的过滤器。