web-dev-qa-db-ja.com

WordPressアプリケーションでURLを処理する

WordPressの認証を利用するために、WordPressの内部で実行するWebアプリケーションがあります。これを機能させるために、アプリケーションのスタートページを単に含むテンプレートタイプをアプリケーション用に作成しました。

ちょっとしたハックですが、一面を除いて、これはうまく機能します - すべての相対URLは現在、リソースへの実際のパスではなく、WordPressのページをベースとして使用します。たとえば、私のアプリケーションのページがhttp://mysite.com/myappにある場合、スタイルシートへの相対リンクは期待どおりにhttp://mysite.com/myapp/css/stylesheet.cssになります。

残念ながら、これはスタイルシートの実際の場所ではありません。スタイルシートの実際の場所はhttp://mysite.com/directory1/directory2/directory3/css/stylesheet.cssです。

ベースURLがリソースの場所を正確に反映していない場合、Webアプリケーションでこのリソースにリンクする方法を教えてください。

注意:私たちがローカルに開発しているように私は絶対リンクを使うことができません、それは明らかにWordPressサイトと同じディレクトリ構造を持っていません。

2
Nathan Friend

私があなたの説明を正確に読んでいるならば、../directory1/directory2/directory3/css/stylesheet.cssはあなたをそこに連れて行くべきです。

しかし、私はWordPressで相対リンクを使用することに非常に用心深くなるでしょう。多くの「ディレクトリ」が実際には存在しないため、これらは必ずしも期待通りの動作をするわけではありません。それらはWordPressとmod_rewriteによって作られています。この2つは、ファイルシステム構造についてうそをつくことです。たとえば、http://blog.com/category/cat-aはありません。そのページの相対リンクは壊れているでしょう。

bloginfo または site_url を使用して絶対URLを作成するほうが賢明です。 site_urlはその機能を優先します。

$url = siteurl('/directory1/directory2/directory3/css/stylesheet.css');
0
s_ha_dum