_ id _ によって生成されたカスタムWordPressのURLがあります。このURLのhttps://example.com/account/customer-bookings/?view-booking=4
をhttps://example.com/account/customer-bookings/view-booking/4
に書き換える必要があります。寄付するにはどうすればいいですか。
私の現在の.htaccessコードは以下の通りです。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php56” package as the default “PHP” programming language.
<IfModule mime_module>
AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
WordPressはリダイレクトやページルートを管理する独自のシステムを持っているので、.htaccessファイルを編集する必要はありません。あなたは関数 add_rewrite_rule()
から始めたいでしょう。
これは3つの引数を取ります。
だから最初に、あなたはaccount/customer-bookings/
のクエリ変数を見つける必要があります。それがページであれば、それはpage_id
である可能性があります。 WordPressがすでに行っていることを再現するには、それが可能です(XXXが特定のpage_idです)。
add_rewrite_rule(
'^account/customer-bookings/?$',
'index.php?page_id=XXX'
);
これを拡張する必要があります。( このコードを追加した後に書き換えルールをフラッシュすることを忘れないでください! )
add_action('init', 'wpse_view_booking_rewrite');
function wpse_view_booking_rewrite() {
add_rewrite_rule(
'^account/customer-bookings/view-booking/([^/]+)/?$',
'index.php?page_id=XXX&view-booking=$matches[1]',
'top'
);
}
これですでに正しいページが表示されているはずです。ただし、get_query_var('view-booking')
はデフォルト変数ではないため、使用することはできません。これを解決するには、単にWPにそのように気を付けるように伝えます。
add_filter('query_vars', 'wpse_view_bookings_filter');
function wpse_view_bookings_filter($vars) {
$vars[] = 'view-booking';
return $vars;
}
この時点でWordPressは変数について知っています、そしてget_query_var('view-booking')
を呼び出すことによってあなたは適切な変数を取得するでしょう。