phpで加工するだけなんだけどね。
前提知識
カラーミーショップとカラーミーWPオプションのURLはこういう具合になっている。
| カラーミー | https://example.jp/ |
| カラーミーWP | https://example.jp/apps/note/ |
ベタ打ちすれば済む話だけど、ベタ打ちはあんまりやりたくない。
WP(php)環境を活用してURLを出力できるようにしたいし、なんならhome_url();みたいな使い勝手の良いものにしたいねって考え。
設計
functions.phpで関数を作り、各テーマファイルで使えるようにする。
関数に引数を入れたら下層ページのURLになるようにする。
| $colormeUrl(); | https://example.jp/ |
| $colormeUrl(‘product’); | https://example.jp/product |
| $colormeUrl(‘product/01’); | https://example.jp/product/01 |
使い勝手悪くないんじゃないですかね。
やっていく
/**
* カラーミーアプリ等でサブディレクトリ運用しているWPから、
* 本家(ドメインルート)のURLを取得・生成する関数
*
* @param string $path 追加したいパス(例: 'product', '/product/')
* @return string 生成されたURL
*/
function colormeUrl( $path = '' ) {
// 1. WordPressのトップURL(https://example/apps/note/)を取得
$wp_home_url = home_url();
// 2. URLを分解してプロトコル(scheme)とドメイン(host)を抽出
$parsed_url = parse_url( $wp_home_url );
$scheme = isset( $parsed_url['scheme'] ) ? $parsed_url['scheme'] . '://' : 'https://';
$host = isset( $parsed_url['host'] ) ? $parsed_url['host'] : '';
// 3. ルートURL(https://example.jp/)を組み立て
$root_url = $scheme . $host . '/';
// 4. 引数($path)があれば末尾に結合する
if ( ! empty( $path ) ) {
// 先頭の斜線(/)を一度取り除いてから結合し、重複を防ぐ
$root_url .= ltrim( $path, '/' );
}
return $root_url;
}引数を「/product」みたいに、先頭に「/」を入れちゃっても大丈夫な感じにフォローしてある。

コメント