Wordpress переписать URL - PullRequest
       11

Wordpress переписать URL

0 голосов
/ 31 марта 2012

Я хочу переписать http://website.com/?slug=product_info.php&products_id=32 в http://website.com/product_info/32, и я использую этот код,

add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars'); 


// Adding a new rule
function wp_insertMyRewriteRules($rules)
{
    $newrules = array();
    $newrules['(product_info)/(\d*)$'] = 'index.php?pagename=store&slug=product_info.php&products_id=$matches[1]';
    return $newrules + $rules;
}

// Adding the bid var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars)
{
    array_push($vars, 'products_id');
    return $vars;
}

Я также использовал этот код,

add_action( 'init', 'wpse41778_add_rewrite' );
function wpse41778_add_rewrite()
{
    add_rewrite_tag('%products_id%','([^/]+)');
    add_rewrite_tag('%slug%','([^/]+)');
    add_rewrite_rule(
        '^product_info/([^/]+)/?$', 
        'index.php?pagename=store&slug=product_info.php&products_id=$matches[1]',
        'top'
    );
}

Я вручную сбросил правила, но когда я перешел на http://website.com/product_info/32, он перешел на http://website.com вместо страницы продукта. Оба кода имеют такую ​​проблему.

Вот содержимое моего .htaccess,

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteRule ^login$ /wp-login.php [L]
RewriteRule ^signup$ /wp-signup.php [L]
RewriteRule ^register$ /wp-register.php [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]

Я не знаю, в чем проблема, и я на самом деле новичок в этом. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 31 марта 2012

Правила не сбрасываются, добавьте этот код для автоматической их очистки:

add_action('wp_loaded', 'my_flush_rules');

// flush_rules() if our rules are not yet included
function my_flush_rules(){
    $rules = get_option('rewrite_rules');

    if (!isset($rules['(product_info)/(\d*)$'])) {
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
    }
}

и убедитесь, что ваш файл .htaccess доступен для записи в Wordpress

...