web-dev-qa-db-ja.com

get_template_directory_uri()および他のURLタグがテーマで機能なし

そのため、テーマ内のCSSファイルとJSファイルの相対パスを作成するために、私のheader.phpファイルにget_template_directory_uriまたはbloginfo()を追加します。

例えば。、

    <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">

理論的にはこれは示す必要があります

    <link rel="stylesheet" href="http://mysite.com/wp-content/themes/myTheme/css/style.css">

問題は、ソース内の<head>タグを見たときに私が見ることができるのは次のとおりです。

    <link rel="stylesheet" href="/css/style.css">

他のすべてのテンプレートタグは私のファイル(get_permalink()、the_title()など)で機能しますが、これは機能しません。 echo get_bloginfo('url')また動作します。

私はwp-config.phpファイルをいじって、次のようなことをすることを考えていました。

define('WP_HOME','http://example.com/blog');
define('WP_SITEURL','http://example.com/blog');

...しかし、それがURLの書き換えのベストプラクティスかどうかはわかりません。

私は何かが足りないのですか?

2
aboutaaron

あなたが持っているもの:

 <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/style.css">

should正常に動作します。 header.phpにコピーして貼り付けたところ、うまくいきました。

しかし これは ではありません あなたはどのようにCSSやJavaScriptファイルをインクルードするべきですか。正しい方法はwp_enqueue_scriptsフックを使うことです。たとえば、ロードするJavaScriptファイルがあるとします。このファイルにはjQueryが機能する必要があります。スクリプトをエンキューし、依存関係としてjQueryをリストします。 WordPressは残りをします:

<?php
function my_scripts_method() {
   // register your script location and dependencies
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery')
    );
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

スタイルの場合(同じフックが使用されます):

function my_styles_method() {  
    // Register the style like this for a theme:  
    wp_register_style( 'my-custom-style', get_template_directory_uri().'/css/custom-style.css');  

    // enqueue the stule  
    wp_enqueue_style( 'my-custom-style' );  
}  
add_action( 'wp_enqueue_scripts', 'my_styles_method' ); 

このコーデックスのページと wp_enqueue_script()wp_enqueue_style() を読んでください。

重要ではないように思えるかもしれませんが、特にスクリプトのロードでは、それらを「手動で」ロードするとテーマやプラグインが壊れることがおそらくわかるでしょう。

4
Stephen Harris

これについては少し遅れましたが、私はちょうど同じ問題に遭遇しました。私の問題は、空のスターターテンプレートテーマですべてのテーマファイルを変更し、テーマのインストール手順を実行しなかったため、正しいディレクトリが取得されなかったことです。テーマを再アクティブ化することは、この問題に対する解決策を見つけるための適切な最初のステップです。

2
Matt

現在のテーマを無効にして(つまり、異なるテーマを有効にする、たとえばTwentyFourteenなど)、次にテーマを再度有効にします。

テーマが有効化されると、WordPressは相対URIの初期設定などを経て、WordPressがその初期化コードを実行しない場合があります(特に新しいテーマ開発)。テーマを無効にしてから再度有効にすると、WordPressがテーマの初期化設定を実行する機会を得ることができます。

0
reor

get_bloginfo( 'url')がheader.phpで機能している場合は、get_template_directory_uri()を使用する代わりに。 bloginfo( 'stylesheet_url')を使用してください。アクティブなテーマのプライマリCSS(通常style.css)ファイルのURLを返します。

0
Vinod Dalvi

単純なバージョンのbloginfoを試してみましたか?

<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo('template_url); ?>/css/style.css" />

またはあなたのバージョン(get_bloginfoを意味する)を使用することができますが、私はあなたを思う
はそれをvarに代入し、それをエコーし​​ます。

<link rel="stylesheet" type="text/css" media="all" href="<?php $turl = get_bloginfo('template_url); echo tulr; ?>/css/style.css" />

...

これがあなたの問題を解決するのに役立つことを願っています...

よろしく、Sagive。

0
Sagive SEO