我试图让XML提要显示漂亮的永久链接,而不是显示查询字符串。问题是我拿不到/products/
尝试处理自定义重写模板标记时显示的端点。以下是我所拥有的:
/** Register Query Vars **/
function theme_custom_query_vars( $vars ){
$vars[] = \'custom_category\';
$vars[] = \'products\';
return $vars;
}
add_filter( \'query_vars\', \'theme_custom_query_vars\' );
/** Register Endpoint **/
function theme_register_endpoints() {
add_rewrite_rule( \'^products/?\', \'index.php?products=products\', \'top\' );
add_rewrite_rule( \'^products/([^/])/?\', \'index.php?products=products&custom_category=$matches[2]\', \'top\' );
add_rewrite_tag( \'%custom_category%\', \'([0-9])\' );
}
add_action( \'init\', \'theme_register_endpoints\' );
那很好-我的
products
端点存在,我可以将其重定向到特定模板。现在的问题是
wp_query
知道这一点
custom_category 存在,并为其分配了一个值,传递
$permalink
仅显示我的基本URL(
http://domain.com/)所以我
cannot 替换模板标记,因为它在我的
$permalink
变量
/** Process our Rewrite Tag **/
function theme_rewrite_tags_filter( $permalink ) {
global $wp_query;
printf( \'<pre>%s</pre>\', print_r( $wp_query, 1 ) );
die( $permalink );
if( false !== strpos( $permalink, \'%custom_category%\' ) ) {
die( \'made it!\' );
}
return $permalink;
}
add_filter( \'page_link\', \'theme_rewrite_tags_filter\' );
我必须在模板标记方面遗漏一些东西,或者我可能对端点的结构有误解,但是
$permalink
只是没有显示
products
端点或
%custom_category% 模板标记:
The Situation
我正在使用一个外部API,它为我提供了一个项目和类别的XML提要。API使用类别ID并返回该类别中的项目。我想做的是:
创建端点products
显示所有可用类别:domain.com/products/
创建一个通过查询字符串传递类别ID的动态端点?custom_category=2
然后把它改写成一个非常永久的domain.com/products/categoryname/
- 我不知道类别名称,所以我需要通过给定的ID向API询问类别名称。最后,以与上面类似的方式,我需要通过查询字符串获取给定的项目IDitem_id=17
并将其改写成一个我并不挑剔的永久链接:domain.com/products/productname/
或domain.com/products/categoryname/productname/
- 我不知道项目名称,所以我需要通过给定的ID向API询问项目名称。我必须在链接中使用ID,因为API很旧,不理解slug(因此我无法向API传递slug,也无法期望我需要传递某种ID的结果),但我希望从查询字符串中获取ID,点击API以获取名称,使其对URL友好并将其放入URL。