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__rules();
 }

function jpost_deactivate() {
    flush__rules();
}

//add  rules in case another plugin flushes rules
add_action('init', 'jpost_plugin_rules');
//add plugin query vars (product_id) to 
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__rule('jpost/?([^/]*)', 'index.php?jpost=jpost&$matches[1]', 'top');
//    调试时如需要重新应用rewrite规则并保存到数据,删除以下2行的注释
//    global $wp_; 
//    $wp_->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(' denied.');
        }
        exit;
    endif;
}

 

搬瓦工年付$28CN2高速线路,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快,建站稳定,搬瓦工BandwagonHost VPS优惠BWH26FXH3HIQ点击购买】!

Vultr月付$3.5日本节点,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快【点击购买】!

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up