Wordpress: (url example.com / sitemap) ise bu do ...

5 Cevap php

Daha önce, ben example.com?action=sitemap ile benim site haritası sayfası oluşturma oldum

Bu beni kolayca bir site haritası istek için benim ana sayfada test etmek için izin ...

$_REQUEST['action']

Ancak, yerine ile sitemap bağlantı oluşturmak istiyorum example.com/sitemap

Ve ben "/sitemap" görünümü için isteği ayrıştırmak nasıl bilmek istiyorum

5 Cevap

Böyle Wordpress şey bir yeniden yazma kuralı oluşturabilirsiniz:

function sitemap_rewrite($wp_rewrite) {
    $rules = array('sitemap' => 'index.php?action=sitemap');
    $wp_rewrite->rules = $rules + $wp_rewrite->rules;
    return $wp_rewrite;
}
add_action('generate_rewrite_rules', 'sitemap_rewrite');

function flush_rewrite_rules() {
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}
add_filter('init', 'flush_rewrite_rules');

Yazma kuralları veritabanında saklanır çünkü yalnızca (tema örneğin yüklü olduğunda) bir zamanlar bu fonksiyonları çalıştırmak gerekir gerekir.

Ancak, muhtemelen bu yöntemi kullanarak size $_REQUEST['action'] kullanarak action değişkeni erişemiyor bulacaksınız. Sizin değişken erişmek için Wordpress eklemek etmiş olacak 'query_vars dizisi, böyle bir şey:

function add_action_query_var($vars) {
    array_push($vars, 'action');
    return $vars;
}
add_filter('query_vars', 'add_action_query_var');

Daha sonra get_query_var('action') kullanarak eylem değişkeni alabilirsiniz.

if (strpos($_SERVER['PHP_SELF'],'sitemap')===false) {
//sitemap not found in server string
} else { 
//sitemap found in server string
}

hile yapmak gerekir

(Config-düzenleme erişimi ya, bu da o zaten ana etkindir demek rağmen) ben gerçekten çok benim cevap agnostik çerçeve / uygulama olacak Wordpress bilmiyorum, ama kolayca bu davranışı başarmak için mod_rewrite kullanabilirsiniz. Sadece web kökünde bir .htaccess dosyasına koymak:

RewriteEngine On
RewriteRule ^/sitemap$ /index.php?action=sitemap [QSA,L]

Zaten bir .htaccess bir RewriteEngine On deyimi ile dosya varsa, güvenli bir yerde mevcut RewriteEngine ilanından sonra sadece ikinci satırı içerebilir.

Ne yapar bütün istek tedavisi için apache söylemek temelde /sitemap üzerine istekleri gibi /index.php?action=sitemap.

Sen PHPs $_SERVER["QUERY_STRING"] değişken içeriğini kontrol deneyebilirsiniz. Bazı ek parametreler de sahip bir olasılık ile /sitemap parçası olmalıdır.

Neden: $_SERVER veya $_REQUEST