2013-08-29 31 views
2

我正在尝试在Wordpress中独立调用PHP文件中的filter钩子。如何调用PHP外部文件中的过滤器钩子

这是文件的代码: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文件上执行过滤器钩子?

回答

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> 
相关问题