前端插件页面

时间:2014-07-30 14:22:01

标签: rewrite wordpress

好的,所以我在这里看了很多关于类似主题的帖子,但是其中的每一个都是对网址中实际的php文件的重写规则,例如cart.php而不是漂亮的永久链接/cart/

基本上,我试图在这里做的就是让WordPress在访问特定网址时包含模板。在这种情况下,example.com / cart /。由于此代码用于插件,因此它是不存在的URL,我无法为其创建页面。我尝试使用重写规则以及查询变量,以便在用户访问/ cart /时显示正确的模板。我觉得我非常接近,但我已经尝试了几种不同的方式,而且我知道我可能会遗漏一些明显的东西。我一直收到404错误,我很确定我的重写规则就是问题所在。你能帮我个忙吗?

代码:

/* Rewrite Rules */
add_action('init', 'llc_product_rewrite_rule');
function llc_product_rewrite_rule() {
    add_rewrite_rule( 'cart/', 'index.php?llc_page=cart', 'top' );
}

/* Query Vars */
add_filter( 'query_vars', 'llc_product_register_query_var' );
function llc_product_register_query_var( $vars ) {
    $vars[] = 'llc_page';
    return $vars;
}

/* Parse Request */
add_action('parse_request', 'llc_cart_template');
function llc_cart_template() {
    if (get_query_var('llc_page') && (get_query_var('llc_page') == "cart")) {   
    include plugin_dir_path(__FILE__).'inc/cart.php';
    exit();
    }
    return;
}

1 个答案:

答案 0 :(得分:0)

感谢你们所有经过深思熟虑的回答你们,但不幸的是我一整天都没有,并且不得不通过试验和错误来解决这个问题。

首先,如果你只想让example.com/cart/加载一个特定的页面模板,当页面不存在时(例如,如果你需要你的wordpress插件来生成页面),这就是你的方式#39;我需要设置你的代码。为了澄清与我的问题中的代码有什么不同,它是重写规则,以及我包含模板的方式。我使用template_include而不是parse_request

/* Rewrite Rules */
add_action('init', 'llc_product_rewrite_rule');
function llc_product_rewrite_rule() {
    add_rewrite_rule( 'cart/?$', 'index.php?llc_page=cart', 'top' );
}

/* Query Vars */
add_filter( 'query_vars', 'llc_product_register_query_var' );
function llc_product_register_query_var( $vars ) {
    $vars[] = 'llc_page';
    return $vars;
}

/* Template Include */
add_filter('template_include', 'llc_cart_template_include', 1, 1);
function llc_cart_template_include($template)
{
    global $wp_query;
    $llc_page_value = $wp_query->query_vars['llc_page'];

    if ($llc_page_value && $llc_page_value == "cart") {
        return plugin_dir_path(__FILE__).'inc/cart.php';
    }

    return $template;
}