我正试图在Wordpress中的独立 PHP 文件中调用filter
挂钩。
这是该文件的代码: my_external_file.php :
<?php
require( dirname(__FILE__) . '/../../../../../../../wp-load.php');
add_filter('init', 'test_function');
function test_function (){
global $global_text_to_shown;
$global_text_to_shown = 'Hello World';
}
global $global_text_to_shown;
$quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
//This work fine, shown editor good.
wp_editor( $global_text_to_show, 'content', array( 'media_buttons' => false, 'tinymce' => true, 'quicktags' => $quicktags_settings ) );
//Load js and work fine the editor - wp_editor function.
wp_footer();
?>
问题是过滤器没有被执行,因此函数没有被执行。
如何在此外部 PHP 文件上执行过滤器挂钩?
答案 0 :(得分:2)
首先,主要问题$global_text_to_show
不是$global_text_to_show
。n
钩子init
不是过滤器,它是一个动作:add_action('init', 'test_function');
。请参阅Actions and Filters are not the same thing。
以这种方式加载wp-load.php
是crappy code;)请参阅Wordpress header external php file - change title?。
第二个主要问题是 为什么 和 你需要什么?
无论如何,使用过滤器init
将the_editor_content
无效。虽然我不明白目标:
<?php
define( 'WP_USE_THEMES', false );
require( $_SERVER['DOCUMENT_ROOT'] .'/wp-load.php' );
// Requires PHP 5.3. Create a normal function to use in PHP 5.2.
add_filter( 'the_editor_content', function(){
return 'Hello World';
});
$quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' );
?><!DOCTYPE html>
<html>
<head>
<?php wp_head(); ?>
</head>
<body>
<?php
wp_editor(
'',
'content',
array(
'media_buttons' => false,
'tinymce' => true,
'quicktags' => $quicktags_settings
)
);
wp_footer();
?>
</body>
</html>