WordPress Plugins make customer url/page 自定义页面/参数 代码示例

之前我们做了WordPress自动采集并发布内容的插件,里面用到了需要重新另外打开一个窗口来采集内容,以防止出现不必要的错误而导致中断。

这里使用到了一个新的定义,比如我需要使用

https://laoji.org/jpost/?jtask=laoji.org

但其实这个页面并不存在,这里只是虚拟了一个页面和参数来处理数据。

具体代码如下:

//register activation function
register_activation_hook(__FILE__, 'jpost_activate');
//register deactivation function
register_deactivation_hook(__FILE__, 'jpost_deactivate');
 
 
function jpost_activate() {
    jpost_plugin_rules();
    flush_rewrite_rules();
 }
function jpost_deactivate() {
    flush_rewrite_rules();
}
//add rewrite rules in case another plugin flushes rules
add_action('init', 'jpost_plugin_rules');
//add plugin query vars (product_id) to wordpress
add_filter('query_vars', 'jpost_plugin_query_vars');
//register plugin custom pages display
add_filter('template_redirect', 'jpost_plugin_display');

 
function jpost_plugin_rules() {
    add_rewrite_rule('jpost/?([^/]*)', 'index.php?jpost=jpost&$matches[1]', 'top');
//    调试时如需要重新应用rewrite规则并保存到数据,删除以下2行的注释
//    global $wp_rewrite; 
//    $wp_rewrite->flush_rules(); 
}
function jpost_plugin_query_vars($query_vars) {
    array_push($query_vars,'jpost');
    array_push($query_vars,'jtask');
    array_push($query_vars,'i');
    array_push($query_vars,'jpage');
    array_push($query_vars,'debug');
    return $query_vars;
}
function jpost_plugin_display(  $templates = '' ) {
    global $wp_query,$wpdb,$options;
    $template = $wp_query->query_vars;
    if ( array_key_exists( 'jpost', $template ) && 'jpost' == $template['jpost'] ):
        if ( is_user_logged_in() ) { 
            require_once  plugin_dir_path( __FILE__ )."wp-jcrawl.php";
        }else{
            echo wp_jpost_output('Access denied.');
        }
        exit;
    endif;
}

 

WeChat