以下是上述讨论中的所有示例代码段,汇编成两个完整的代码页:一个用于jQuery,另一个用于PHP。
PHP
此代码驻留在您的一个插件页面上。
<?php add_action('admin_enqueue_scripts', 'my_enqueue');
function my_enqueue($hook) {
if( 'myplugin_settings.php' != $hook) return;
wp_enqueue_script( 'ajax-script',
plugins_url( '/js/myjquery.js', __FILE__ ),
array('jquery')
);
$title_nonce = wp_create_nonce('title_example');
wp_localize_script('ajax-script', 'my_ajax_obj', array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => $title_nonce,
));
}
add_action('wp_ajax_my_tag_count', 'my_ajax_handler');
function my_ajax_handler() {
check_ajax_referer('title_example');
update_user_meta( get_current_user_id(), 'title_preference', $_POST['title']);
$args = array(
'tag' => $_POST['title'],
);
$the_query = new WP_Query( $args );
echo $_POST['title'].' ('.$the_query->post_count.') ';
wp_die(); // all ajax handlers should die when finished
}
查询
此代码位于您的插件文件夹下面的文件js/myjquery.js中。
jQuery(document).ready(function($) { //wrapper
$(".pref").change(function() { //event
var this2 = this; //use in callback
$.post(my_ajax_obj.ajax_url, { //POST request
_ajax_nonce: my_ajax_obj.nonce, //nonce
action: "my_tag_count", //action
title: this.value //data
}, function(data) { //callback
this2.nextSibling.remove(); //remove the current title
$(this2).after(data); //insert server response
});
});
});
在存储首选项之后,将所得的帖子计数添加到所选标题。
下一节:与传统的系统cron不同,即将特定时间(即每小时5分钟以上的小时)调度任务,WP-Cron使用间隔来模拟系统cron。 WP-Cron被赋予了第一个任务的时间和一个间隔,以秒为单位的时间,之后重复任务。 例如,如果您计划任务从下午2:00开始,间隔时间为300秒(5分钟),则任务将首先在下午2:00运行,然后在下午2:05和之后每5分钟运行一次。