###【概要】
1つのドメインにwpが2つインストールされているのですが、カスタム投稿タイプの記事URLをリライトをおこないたいです。
###【環境】
- PHP7.3.9
- WordPress 5.2.2
###【前提】
- 「rootディレクトリ直下」と「/A/B/」それぞれにwpがインストールされいている
wordpress1(URL:wordpress1)
┗A━B━wordpress2(URL:wordpress1/A/B/)
- wordpress1に「A」という固定ページ(URL:wordpress1/A)が存在する
- wordpress2のカスタム投稿「C」が存在する(URL:wordpress1/A/B/C/)
###【やりたいこと】
- wordpress2のカスタム投稿「C」のURLを「wordpress1/A/C/」にリライトしたい
- wordpress1内にカスタム投稿タイプを作成するのではなく、wordpress2内のカスタム投稿タイプのURLリライトをおこないたい
こちらは実現可能でしょうか?
情報不足等ございましたらご指摘いただけますと幸いです。
ご教示のほど、よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
皆様のご助言のおかげで、当初とは違う形となりましたが、無事解決に至りました。
自分のメモを兼ねて、方法を記載いたします。
不格好ですので、ページ数が多かったり投稿を増やしていきたい場合には向いておりません。
- 「wordpress1」に今回設定したいURLのディレクトリを作成する
- 作成したディレクトリにそれぞれ「index.php」を設置する
- 「wordpress2」のfunctions.phpにリライトルールを記述する
①「wordpress1」に今回設定したいURLのディレクトリを作成する
元々wordpress1直下に「/A」というディレクトリ(URL:wordpress1/A)を作成し、
こちらのサイトを参考に、index.phpを設置しておりました。
今回、このディレクトリに「/D」(URL:wordpress1/A/D)を作成します。
※「wordpress2」のカスタム投稿タイプ「C」(URL:wordpress1/A/B/C)を「D」というディレクトリ(URL:wordpress1/A/D)にリダイレクトさせます
「/D」の中にページ表示用のディレクトリを作成していきます。
例:URL:wordpress1/A/D/01
作成したディレクトリにそれぞれ「index.php」を設置する
作成したディレクトリにindex.phpを設置します。
先ほど同様、こちらのサイトを参考に設置しますが、
このとき、index.php内の記述を下記のように変更する必要があります。
【「/D」(URL:wordpress1/A/D)】
PHP
1require( dirname( __FILE__ ) . '/../B/wp-blog-header.php' );
【「/D/01」(URL:wordpress1/A/D/01)】
PHP
1require( dirname( __FILE__ ) . '/../../B/wp-blog-header.php' );
「wordpress2」のfunctions.phpにリライトルールを記述する
WP Rewriteを参考に、「wordpress2」のfunctions.phpにリライトルールを記述していきます。
wiki内の例をコピペし、「wp_insertMyRewriteRules」を書き換えます。
PHP
1function wp_insertMyRewriteRules($rules) 2{ 3 $newrules = array(); 4 $newrules['A/D/01'] = 'index.php?post_type=C&p=ページID'; 5 return $newrules + $rules; 6}
自分自身十分に理解しておりませんでしたが、上記の書き方で
「A/D/01」(URL:wordpress1/A/D/01)にアクセスしたとき、
wordpress2の「index.php?post_type=C&p=ページID」の情報を表示する
という意味のようです。
以上の方法で「URL:wordpress1/A/B/C/01」を「URL:wordpress1/A/D/01」に表示させることができました。
投稿2019/12/10 07:06
総合スコア11
0
ちょっと気になる点としては...
wordpress1/A
と wordpress2 がインストールされているディレクトリ /A/B
部分の ディレクトリ /A
は、同じ名前ですか?
標準状態の WordPress では、スラッグと同名のディレクトリがある場合、ディレクトリが優先されると思うのですが、 wordpress1/A で、固定ページの表示は、正しく動作していますか?
同じサーバー内の別の URL の内容を RewriteRule で表示したいということであれば、 wordpress1/A/.htaccess に
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*) /A/B/$1 [L]
の様な感じで、.htaccess で、RewriteRule を設定して、WordPress2 へ処理を転送すれば良いと思います。
WordPress2 側から、wordpress1/A/C
のような URL で出力が必要であれば、WordPress2 側で、WP_Rewrite で、URLを設定する必要があるかもしれません。
別解としては、WordPress1 の固定ページのカスタムテンプレートで、 WP REST API 等を用いて、WordPress2 のカスタム投稿を取得して、表示させるという方法もありかもしれません。
投稿2019/12/10 02:24
総合スコア25218
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
おおよそイメージ掴まれてるいるようですので、例えば
wordpress2でカスタム投稿タイプを作成とRewriteAPIを利用し、
wordpress1では、単に対応URLへリダイレクトさせるのではどうでしょうか。
投稿2019/12/10 02:07
編集2019/12/10 02:11総合スコア1857
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/10 05:12 編集
2019/12/10 04:19 編集
2019/12/10 05:22
2019/12/10 06:40 編集
2019/12/10 06:33
2019/12/10 06:35
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。