某一页面中的URL变量

时间:2013-02-05 作者:Digerkam

我在某个页面中有一个产品循环,我想通过URL过滤其类别,例如:

mysite.com/products // Shows all products
mysite.com/products/sculptures // Shows only sculptures
mysite.com/products/sculptures/2 // Shows only sculptures paged 2
mysite.com/products/paintings // Shows only paintings
所以我尝试这样绘制地图:

mysite.com/products/{category}/{paged} // Shows only sculptures
但这到目前为止还没有奏效。顺便说一下,我的代码也可以作为短代码使用。

1 个回复
最合适的回答,由SO网友:david.binda 整理而成

请尝试以下代码:

add_filter( \'query_vars\', \'my_query_vars\' );
function my_query_vars( $vars ) {
    $vars[] = \'catname\';
    return $vars;
}

add_action( \'generate_rewrite_rules\', \'my_rewrite_rules\' );
function my_rewrite_rules( $wp_rewrite )
{
    $products_page_id = 1; //your product\'s page ID
    $wp_rewrite->rules = array(
        \'products/?([0-9]{1,})/?$\' => $wp_rewrite->index . \'?page_id=\'.$products_page_id.\'&paged=\' . $wp_rewrite->preg_index( 1 ),
        \'products/(.+?)/?([0-9]{1,})/?$\' => $wp_rewrite->index . \'?page_id=\'.$products_page_id.\'&catname=\'.$wp_rewrite->preg_index( 1 ).\'&paged=\' . $wp_rewrite->preg_index( 2 ),
        \'products/(.+?)/?$\' => $wp_rewrite->index . \'?page_id=\'.$products_page_id.\'&catname=\'.$wp_rewrite->preg_index( 1 ),
    ) + $wp_rewrite->rules;
}
您将获得cat\\U名称,而不是asget_query_var(\'catname\'); 并分页为get_query_var(\'paged\');

对以上代码的解释很少:这会在每次请求www.yourdomain时向WordPress添加重写规则。com/products/get-rewrite到(意味着内容来自)www.yourdomain。com/索引。php?page\\u id={$products\\u page\\u id}&;paged=2(例如)。

$producst\\u page\\u id是在管理中使用shorcode的产品页面的id-因此应该显示哪些内容的页面。paged是一个参数,用于获取产品的另一页。catname是另一个参数,用于按类别过滤退回的产品。

结束

相关推荐