カラーミーWPオプション上でカラーミーのサイトURLを取得・出力するサンプル

phpで加工するだけなんだけどね。

前提知識

カラーミーショップとカラーミーWPオプションのURLはこういう具合になっている。

カラーミーhttps://example.jp/
カラーミーWPhttps://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」みたいに、先頭に「/」を入れちゃっても大丈夫な感じにフォローしてある。

コメント

タイトルとURLをコピーしました