我试图给我的自定义CPT(订单)提供一个漂亮的网址。这是我尝试的方式:
//Update appURL
if (jQuery('button[id="ukApp"]').hasClass( "checked" )) {
appURL = "wp-content/plugins/GoMarkets_application/uk/uk-application.php";
} else if (jQuery('button[id="itlApp"]').hasClass( "checked" )) {
appURL = "wp-content/plugins/GoMarkets_application/itl/it-application.php";
}
//Get URL path
function getContextPath() {
var ctx = window.location.pathname,
path = '/' !== ctx ? ctx.substring(0, ctx.indexOf('/', 1) + 1) : ctx;
return path + (/\/$/.test(path) ? '' : '/');
}
//Country Application URL
function getOutput() {
jQuery.ajax({
url: getContextPath() + appURL,
complete: function (response) {
jQuery('#output').html(response.responseText);
},
error: function () {
jQuery('#output').html('Bummer: there was an error!');
}
});
return false;
}
假设帖子ID为32,此代码创建以下网址: http://www.example.com/orders/1121032
现在我想编写一个代码来显示上面url中帖子ID = 32的帖子。 我听说我应该使用自定义查询变量。但我不知道如何使用它。 这是我编写的其余代码
add_filter('post_type_link', 'custom_post_type_link', 1, 3);
function custom_post_type_link( $link, $post = 0 ){
if ( $post->post_type == 'orders' ){
$order_code = 1121000+$post->ID;
return home_url( 'orders/' . $order_code);
} else {
return $link;
}
}
答案 0 :(得分:0)
添加自定义重写规则后,需要告知wordpress激活新规则。
在add_rewrite_rule
函数调用后使用此方法。
$wp_rewrite->flush_rules();
警告:flush_rules
价格昂贵,您绝对不想在每次请求时都拨打电话。通常,您会将custom_rewrites_init
和flush_rules
放入插件register_activation_hook函数中。
如果您懒惰,可以将其添加到您的代码中一次,向网站发出请求(这将重写.htaccess重写规则),然后将flush_rules
方法注释掉。 / p>