Как исправить тему WordPress для работы с плагинами? - PullRequest
6 голосов
/ 11 марта 2012

Это моя первая попытка кодирования пользовательской темы WordPress, и я почти на месте.Есть несколько ошибок, как и с чем-нибудь, но я пробовал несколько разных способов их исправить, но безуспешно.

Ссылка www.studiosimplicit.com/wp.

Моя первая проблема связана с ползунком nivo на странице событий (Www.studiosimplicit.com/wp/events).Изначально у меня возникла проблема с самим плагином, когда изображения располагались друг над другом.Чтобы исправить это, я вручную ввел код для вызова файлов nivo .js, и это, похоже, решило эту проблему.Но теперь загружаемое изображение есть, но изображения не загружаются.

Я проверил URL изображений, и это не проблема.Я также включил функцию «post-thumbnails» (как это предлагалось на сайте nivoslider в качестве общего решения моей проблемы), но, похоже, это не исправило ее.Ничего не стоит, когда я переключаюсь на тему по умолчанию, слайдер работает нормально.Когда я активирую свою собственную тему, она ломается.

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

Пожалуйста, помогите!

Ответы [ 3 ]

20 голосов
/ 11 марта 2012

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

Чтобы привести простой пример, каждая тема должна иметь вызов wp_head() где-то в разделе <head> страницы вывода.Это позволяет плагину «подключаться» к вашему <head> и, например, к выходному коду для загрузки его Javascript.

Вот пример из реальной жизни.Тема WordPress Twentyeleven содержит это в файле header.php (традиционно это часть темы, которая выводит раздел <head> любой страницы):

... other <head> stuff
    wp_head();
?>  
</head>

Слайдер WP Nivo использует этот код при вызовеwp_enqueue_script, например, в файле wp-nivo-slider.php.За кулисами wp_enqueue_script использует хук wp_head() в теме Twentyeleven для вывода запрошенного Javascript-включения в раздел <head> (через слегка замысловатый маршрут, который по умолчанию заканчивается на wp_print_head_scripts).

Таким образом, в основном, если плагин работает с предоставленной темой, но не работает с вашей пользовательской темой, ваша задача состоит в том, чтобы найти зацепки, отсутствующие в вашей теме, которые плагин пытается использовать.

Если вы посмотрите документацию по разработке тем WordPress , вы найдете список хуков, которые темы должны включать в раздел «Хуков API плагинов».Это, в частности:

  • wp_head
  • wp_footer
  • wp_meta
  • comment_form

Важными для большинства плагинов будут wp_head и wp_footer.Именно здесь большинство Javascript включается либо в верхний, либо в нижний колонтитул (непосредственно перед закрывающим тегом <body>).

Большинство плагинов, таких как слайдеры Javascript, галереи изображений и т. Д., Просто добавят новыйсценарий или два в разделе <head> или нижнем колонтитуле веб-сайта и, возможно, включают CSS-файлы для стилизации своего содержимого, опять же, в разделе <head>, так что эти два, как правило, являются единственными необходимыми хуками.

Итак, мой первоначальный совет - убедиться, что ваша пользовательская тема включает вызов wp_head() в конце ее раздела <head> (скопируйте код из той рабочей темы, который у вас есть), а также вызов wp_footer(), перед закрывающим тегом </body>.Скорее всего, благодаря этому заработает большинство плагинов на основе Javascript.

2 голосов
/ 23 ноября 2013

Только для справки: у меня была похожая проблема, и мне пришлось заменить строку

<?php echo get_the_content() ?>

с этим:

<?php echo the_content() ?>

Но мне также пришлось включить wp_head и wp_foot, как объяснил Мэтт.

0 голосов
/ 18 января 2015

просто включите

<?php include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); ?>
<?php wp_head()?>

перед головой и после этого она обязательно сработает.

...