好的,我在这里看过许多关于类似主题的文章,但每个帖子都是对url中的实际php文件(如cart.php )的重写规则,而不是漂亮的permalink /cart/。
基本上,我在这里要做的就是在访问特定的url时让WordPress包含一个模板。在本例中,example.com/cart/。由于这段代码是用于插件的,所以它是一个不存在的url,所以我不能为它创建一个页面。当用户访问/cart/时,我试图使用重写规则以及query来显示正确的模板。我想我很接近,但我尝试过几种不同的方法,我知道我可能错过了一些显而易见的东西。我一直得到一个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;
}发布于 2014-07-30 17:04:12
谢谢你们所有深思熟虑的回应,但不幸的是,我没有一整天的时间,必须经过反复试验才能解决这个问题。
因此,首先,如果您只想让example.com/cart/加载特定的页面模板,当页面不存在时(例如,如果您需要wordpress插件来生成页面),那么您将需要设置代码。为了澄清与我问题中的代码有什么不同,这是重写规则,以及我包含模板的方式。我使用的是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;
}https://stackoverflow.com/questions/25039316
复制相似问题