在Wordpress中进行自定义重写(使用漂亮网址)的正确方法是什么?

时间:2018-02-17 17:11:39

标签: wordpress url-rewriting

我已经把我(编码新手)的头围绕着这个很长一段时间了,但却无法让它发挥作用。

我尝试实现的目标如下:

如果访问者访问

some-page /?custom_field = something 我希望将网址翻译成并显示为

一些页/ custom_field /东西

现在发生的事情是,当我点击 some-page / custom_field / something 这样的网址时,我会被带到 some-page / custom_field /

我确实认为我的错误代码在这个函数的某个地方:

function myFunction_rewrite_rule() {
    add_rewrite_rule( '^some-page/custom_field/([a-zA-Z-]*)/?', 'index.php?p=421&custom_field=$matches[1]','top' );
    add_rewrite_rule( '^some-other-page/custom_field/([a-zA-Z-]*)/?', 'index.php?p=423&custom_field=$matches[1]','top' );
}
add_action('init', 'myFunction_rewrite_rule', 10, 0);

我是第一个承认正则表达式来自我最强的领域的人,所以这些导致我的困惑......有没有人在这里看到明显的错误?

顺便说一句,这是我正在使用的其余代码:

$custom_field_query = array();
// add custom_field_query elements
if( !empty( get_query_var( 'custom_field' ) ) ){
    $custom_field_query[] = array( 
        'key' => 'custom_field', 
        'value' => get_query_var( 'custom_field' ), 
        'compare' => 'LIKE' 
    );
}
if( count( $custom_field_query ) > 0 ){
    $query->set( 'custom_field_query', $custom_field_query );
}
}
add_action( 'pre_get_posts', 'custom_field_pre_get_posts', 1 );

function custom_field_rewrite_tag() {
    add_rewrite_tag( '%custom_field%', '([^&]+)' );
}
add_action('init', 'custom_field_rewrite_tag', 10, 0);

对于记录:是的,我在上面的代码中的每次更改后刷新重写规则。

1 个答案:

答案 0 :(得分:0)

事实证明答案不是我的预期。如果我改变

tf.nn.leaky_relu

function myFunction_rewrite_rule() {
    add_rewrite_rule( '^some-page/custom_field/([a-zA-Z-]*)/?', 'index.php?p=421&custom_field=$matches[1]','top' );
    add_rewrite_rule( '^some-other-page/custom_field/([a-zA-Z-]*)/?', 'index.php?p=423&custom_field=$matches[1]','top' );
}
add_action('init', 'myFunction_rewrite_rule', 10, 0);

一切都按预期工作。

详细说明:

function myFunction_rewrite_rule() {
    add_rewrite_rule( '^some-page/custom_field/([a-zA-Z-]*)/?', 'index.php?pagename=some-page&custom_field=$matches[1]','top' );
    add_rewrite_rule( '^some-other-page/custom_field/([a-zA-Z-]*)/?', 'index.php?pagename=some-other-page&custom_field=$matches[1]','top' );
}
add_action('init', 'myFunction_rewrite_rule', 10, 0);

p=421&custom_field=$matches[1]
p=423&custom_field=$matches[1]