我开发了插件并使用短代码来显示。
因此,有两种类型的项目可以显示,如
如果在网址中获取标题,则显示单个项目,如果不是所有项目,那么我已添加到if else状态。
所以对于那个头衔,我已经通过了
add_query_arg( array('title' =>sanitize_title($data->get_title())), get_permalink($post_id) );
现在url是由domain.com/post-slug/?title=nameoftitle生成的
但我想像domain.com/post-slug/nameoftitle
那样的网址我尝试过以下代码但没有工作
function update_rewrite_rules() {
add_rewrite_tag( '%title%', '([^/]*)' );
add_rewrite_rule(
$newVarRegex,
'index.php?pagename=$matches[1]&title=$matches[2]',
'top'
);
}
add_action( 'init', 'update_rewrite_rules' );
但它不起作用
答案 0 :(得分:1)
我得到了它的解决方案。工作代码是:
function js_update_rewrite_rules() {
add_rewrite_tag( '%title%', '([^/]*)' );
$rewrite_rules = get_option( 'rewrite_rules' );
$newVarRegex = '^([^/]*)/title/([^/]*)/?';
// check if the rule exists
if ( !isset( $rewrite_rules[$newVarRegex] ) ) {
add_rewrite_rule(
$newVarRegex,
'index.php?pagename=$matches[1]&title=$matches[2]',
'top'
);
flush_rewrite_rules();
}
}
function js_on_activation() {
js_update_rewrite_rules();
}
register_activation_hook( __FILE__, 'js_on_activation' );
function js_on_init() {
js_update_rewrite_rules();
}
add_action( 'init', 'js_on_init' );