Intereting Posts

get_template_directory_uri () и другие теги URL, не работающие в теме

Итак, я пытаюсь добавить get_template_directory_uri или bloginfo () в файл header.php для создания относительных путей для CSS и JS-файлов в теме.

Например,

<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.

Я что-то упускаю?

Solutions Collecting From Web of "get_template_directory_uri () и другие теги URL, не работающие в теме"

Что у тебя есть:

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

должен работать нормально. Я скопировал и вложил в header.php и это сработало.

Но вы не должны включать в себя файлы css или javascript. Правильный способ – использовать wp_enqueue_scripts hook. Например, скажем, у вас есть файл 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' ); 

Пожалуйста, прочитайте эти страницы Codex и wp_enqueue_script() и wp_enqueue_style()

Это может показаться неважным, но особенно при загрузке скриптов вы, вероятно, обнаружите, что загрузка их вручную приведет к поломке вашей темы и / или подключаемых модулей.

Немного поздно, но я просто столкнулся с той же проблемой. Моя проблема заключалась в том, что я изменил все свои файлы темы с пустой темой шаблона стартера и не прошел шаги установки темы, чтобы не получить правильный каталог. Повторная активация темы может стать подходящим первым шагом в поиске решения этой проблемы.

вы пробовали простую версию bloginfo aka:

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

или вы можете использовать свою версию (то есть get_bloginfo), но я думаю, что вы
должен назначить его var и echo it ..

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

Надеюсь, это поможет решить вашу проблему …

С наилучшими пожеланиями, Сагивей.

если get_bloginfo ('url') работает в header.php, то вместо использования get_template_directory_uri (); используйте bloginfo ('stylesheet_url'); функция, которая возвращает основной URL-адрес основного файла CSS (обычно style.css) активной темы.

Деактивируйте текущую тему (например, активируйте другую тему, скажем, TwentyFourteen), а затем активируйте свою тему.

Когда тема активирована, WordPress проходит через некоторую начальную настройку относительных uri и т. Д., И иногда есть случаи (особенно новая разработка темы), где WordPress не запускает этот код инициализации. Деактивация и восстановление темы гарантирует, что WordPress получит еще один шанс запустить настройку инициализации темы.