添加_重写_规则和自定义变量

时间:2011-01-23 作者:westondeboer

很长一段时间以来,我一直想做类似的事情。我有一个urlhttp://studionumberone.com/portfolio/obey-clothing/ 这只显示了jquery图片库,然后是StudioNumber One。com/portfolio/obey clothing/?视图=全部。它显示了图库中的所有图像,一幅一幅地显示。

我希望url是StudioNumber One。com/公文包/服从服装/所有

自定义post类型只执行基本操作:

<?php get_header(); 
$view = $_GET[\'view\'];
?>
<?php if ($view == "all") { ?>
show all images
<?php } else { ?>
show gallery shortcode 
<?php } ?>
<?php get_footer(); ?>
我试过(运气不好):

add_action( \'init\', \'ss_permalinks\' );
function ss_permalinks() {
    add_rewrite_rule(
        \'([^/]+)/all/?\',
        \'index.php?view=all&service=$matches[1]\',
        \'top\'
);
}
add_filter( \'query_vars\', \'ss_query_vars\' );
function ss_query_vars( $query_vars ) {
    $query_vars[] = \'view\';
    return $query_vars;
}

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

你好@westondeboer:

既然你说你的帖子类型是\'portfolio\' 以下是我的WordPress v3上的工作原理。0.4试验场地\'portfolio\' 自定义帖子类型已定义。它将替换您拥有的所有代码:

add_action(\'init\',\'yoursite_init\');
function yoursite_init() {
  global
  $wp,$wp_rewrite;
  $wp->add_query_var(\'view\');
  $wp_rewrite->add_rule(\'portfolio/([^/]+)/all\',
    \'index.php?view=all&post_type=portfolio&name=$matches[1]\', \'top\');

  // Once you get working, remove this next line
  $wp_rewrite->flush_rules(false);  
}
您还需要刷新重写规则,这可以通过在管理控制台中保存永久链接来完成。让我知道这是否解决了您的问题,如果没有,请给我澄清。

更新

您还需要以不同于使用“$\\u GET[\'view\']”的方式捕获查询参数;这两种方法都可以:

// Option 1
$view = {$GLOBALS[\'wp\']->query_vars[\'view\'];

// Option 2
global $wp;
$view = $wp->query_vars[\'view\'];

结束

相关推荐