创建执行代码的自定义URL(而不是呈现WordPress实体)?

时间:2018-07-04 作者:Louis W

我希望能够创建一个url,匹配后将执行一些PHP代码并输出结果。这能做到吗?

我很熟悉rewrite_rules_array, 它允许您创建自定义url结构,并将它们映射到自定义的帖子类型、分类法等。我希望避免出现一个空白/占位符页面,使Wordpress无法直接指向。

我想用wp_ajax_wp_ajax_nopriv_ 操作,但这只适用于Ajax请求,我希望能够使用标准请求来满足它们。

谢谢你的帮助。

1 个回复
SO网友:Milo

您可以通过重写规则来实现这一点,只需在运行主查询之前退出执行即可。

首先,添加将由重写规则设置的查询变量:

function wpd_query_vars( $query_vars ){
    $query_vars[] = \'my_var\';
    return $query_vars;
}
add_filter( \'query_vars\', \'wpd_query_vars\' );
接下来,重写规则:

function wpd_rewrite_rule(){
    add_rewrite_rule(
        \'^my-url/?$\',
        \'index.php?my_var=true\',
        \'top\'
    );
}
add_action( \'init\', \'wpd_rewrite_rule\' );
最后,我们钩住parse_request 并检查自定义var,运行代码,然后退出:

function wpd_parse_request( &$wp ){
    if ( array_key_exists( \'my_var\', $wp->query_vars ) ){
        echo \'do something\';
        exit;
    }
    return;
}
add_action( \'parse_request\', \'wpd_parse_request\' );

结束

相关推荐