2013-07-08 9 views
6

के अंदर काम नहीं कर रहा है जब मैं मुख्य प्लगइन फ़ाइल (plugin.php) के शीर्ष पर एक ईवेंट शेड्यूल करता हूं तो cron wp_options cron विकल्प में जोड़ा जाता है।wp_schedule_event() कक्षा सक्रियण फ़ंक्शन

wp_schedule_event(time() + 10, 'hourly', 'this_is_my_action');

यह ठीक काम करता है, यह नया क्रॉन कहते हैं। लेकिन, जब मैं प्लगइन क्लास के भीतर अपने सक्रियण फ़ंक्शन में एक ही फ़ंक्शन का उपयोग करने का प्रयास करता हूं, तो यह काम नहीं करता है।

plugin.php अंदर मेरे पास है:

$plugin = new My_Plugin(__FILE__); 
$plugin->initialize(); 

अंदर My_Plugin वर्ग मेरे पास है:

class My_Plugin{ 

    function __construct($plugin_file){ 
     $this->plugin_file = $plugin_file; 
    } 

    function initialize(){ 
     register_activation_hook($this->plugin_file, array($this, 'register_activation_hook')); 
    } 

    function register_activation_hook() 
    { 
     $this->log('Scheduling action.'); 
     wp_schedule_event(time() + 10, 'hourly', 'this_is_my_action'); 
    } 

    function log($message){ 
     /*...*/ 
    } 

} 

लॉग जब मैं प्लगइन को सक्रिय करने के प्रश्न के लिखित जाता है, लेकिन क्रॉन में जोड़ा नहीं की जा रही है वर्डप्रेस डेटाबेस। कोई विचार क्यों?

+0

उन कार्यों वास्तव में एक ही कर रहे हैं? –

+0

हां, यह मेरी मुख्य प्लगइन फ़ाइल में क्रॉन जोड़ता है, भले ही कार्रवाई मौजूद न हो। लेकिन यह सक्रियण फ़ंक्शन – user2103849

उत्तर

-1

इस प्रयास करें:

class My_Plugin{ 

    function __construct($plugin_file){ 
     $this->plugin_file = $plugin_file; 
    } 

    function initialize(){ 
     register_activation_hook($this->plugin_file, array($this, 'register_activation_hook')); 
    } 

    function register_activation_hook() 
    { 
     $this->log('Scheduling action.'); 
     wp_schedule_event(time() + 10, 'hourly', array($this,'this_is_my_action')); 
    } 

    function this_is_my_action(){ 
    //do 
    } 

    function log($message){ 
    } 

} 

आप कार्यक्रम के array($this,'name_function') जोड़ने की जरूरत है।

+1

के अंदर काम नहीं करता है 'wp_schedule_event' में' सरणी ($ this, 'this_is_my_action') 'काम नहीं करता है। – kel

2

आप आप कार्रवाई आप अपने शेड्यूल किए गए इवेंट के साथ पंजीकृत परिभाषित करने की जरूरत:

class My_Plugin{ 

function __construct($plugin_file){ 
    $this->plugin_file = $plugin_file; 
} 

function initialize(){ 
    register_activation_hook($this->plugin_file, array($this, 'register_activation_hook'));   
    add_action('this_is_my_action', array($this, 'do_it'); 
} 

function register_activation_hook() 
{ 
    if (!wp_next_scheduled('this_is_my_action')) { 
     $this->log('Scheduling action.'); 
     wp_schedule_event(time() + 10, 'hourly', 'this_is_my_action'); 
    } 
} 

function this_is_my_action(){ 
//do 
} 

function log($message){ 
} 

function do_it() { 
    // This is your scheduled event 
} 

} 
संबंधित मुद्दे