我已经重新编辑了这个问题:可以在显示第2点的输出之前将变量传递给全局颜色(第3点),就像全局变量一样吗?
class myclass
{
public function init()
{
global $shortcode_tags;
add_shortcode( MYSHORTCODE, array( 'myclass', 'shortcode' ) );
// * point 1
return;
}
public function shortcode( )
{
// *point2
}
function globalcolor($color)
{
echo '<style>body{color:' .$color . '}</style>' . "\n";
// * point 3
}
}
add_action( 'wphead', array( 'myclass', 'globalcolor' ) );
add_action( 'init', array( 'myclass', 'init' ) );
PS。现在我正在阅读自定义字段。enter code here
答案 0 :(得分:1)
do_action()
,您需要add_action()
。
行动init
太早了。您现在甚至为后端,AJAX请求等调用该类。使用仅在前端调用的钩子template_redirect
。
您无法以您尝试的方式发送颜色值。有关工作示例,请参阅示例代码。
示例代码:
class My_Plugin {
/**
* Container for your color value.
* @var string
*/
static $color;
public static function init()
{
// Set the color value as a class member.
self::$color = '#345';
// Class methods are addressed with an array of the object or the
// class name and the function name.
add_action( 'wp_head', array ( __CLASS__, 'print_color' ) );
}
public static function print_color()
{
// In action you have to print/echo to get an output.
print '<style>body{color:' . self::$color . '}</style>';
}
}
add_action( 'template_redirect', array ( 'My_Plugin', 'init' ) );
我强烈建议https://wordpress.stackexchange.com/在WordPress上提出更多问题。 :)