2013-08-29 61 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> 
相關問題