crenshaw-dev
  • 0
Новичок

Как получить URL темы в PHP?

  • 0

Мне нужно получить URL-адрес каталога моей темы, чтобы ссылаться на изображение в каталоге image/headers темы. Как это делается в PHP?

Share
  1. Эта функция вернет URL-адрес каталога темы, чтобы вы могли использовать его в других функциях:

    get_bloginfo('template_directory');
    

    Кроме того, эта функция будет отображать URL-адрес каталога темы в браузере:

    bloginfo('template_directory');
    

    Таким образом, пример изображения в images/headers папке тем будет таким:

    <img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
    
    • 0
  2. То, что сказал @EAMann, с оговоркой. Эрик прав в отношении общего подхода и того, как работают функции bloginfo() и get_bloginfo() как передать параметр 'template_directory', чтобы получить значение, необходимое для (большинства) тем.

    Однако есть одно предостережение, и это предостережение относится к более новым дочерним темам. Если вы используете дочернюю тему, то 'template_directory', вероятно, это не то, что вам нужно, если только вы на самом деле не пытаетесь сослаться на изображение, которое находится в каталоге родительской темы. Вместо дочерних тем вы, вероятно, захотите пройти stylesheet_directory (я знаю, я знаю, имена не говорят вам, что они собой представляют, но эй, так оно и есть!) Немного заимствования из ответа Эрика с использованием stylesheet_directory будет выглядеть так ( Я сократил пример, чтобы он не переносился):

    <img src="<?php bloginfo('stylesheet_directory'); ?>/images/header.jpg" />

    Чтобы проиллюстрировать это, я написал быстрый автономный файл, который вы можете поместить в корень вашего веб-сайта test.php и запустить, чтобы посмотреть, что он выводит. Сначала запустите обычную тему, например TwentyTen, затем запустите дочернюю тему:

    <?php
    /*
    * test.php - Test the difference between Regular and Child Themes
    *
    */
    
    include "wp-load.php";
    
    $bloginfo_params = array(
        'admin_email',
        'atom_url',
        'charset',
        'comments_atom_url',
        'comments_rss2_url',
        'description',
        'home',
        'html_type',
        'language',
        'name',
        'pingback_url',
        'rdf_url',
        'rss2_url',
        'rss_url',
        'siteurl',
        'stylesheet_directory',
        'stylesheet_url',
        'template_directory',
        'template_url',
        'text_direction',
        'url',
        'version',
        'wpurl',
    );
    
    echo '<table border="1">';
    foreach($bloginfo_params as $param) {
        $info = get_bloginfo($param);
        echo "<tr><th>{$param}:</th><td>{$info}</td></tr>";
    }
    echo '</table>';
    

    Если вы замечаете вещи, вы можете заметить, что есть гораздо больше того, к чему вы можете перейти bloginfo() и get_bloginfo() ; изучите код и скриншот ниже для идей.

    Глядя на скриншот, вы можете видеть, что он stylesheet_directory возвращает то же самое, что и 'template_directory' для обычной темы, но с другим значением и, вероятно, значением, которое вам нужно для дочерней темы.

    Возвращаемые значения get_bloginfo() с дочерней темой и без нее в WordPress
    (источник: mikeschinkel.com )

    Для ясности на этом скриншоте wp30.dev есть домен, который работает только на моем локальном компьютере. В настоящее время это экземпляр WordPress 3.0.1, и он настроен 127.0.0.1 (так же, как localhost ) на моем ноутбуке, и я использую его для тестирования специальных примеров, подобных этому. Я использовал VirtualHostX для удобства в Mac OS X, чтобы помочь мне настроить эти частные немаршрутизируемые .dev домены, но любой может сделать это вручную, отредактировав файл hosts компьютера и ? файл httpd.conf.

    Кстати, если вы не знакомы с дочерними темами, вот два других ответа WordPress, которые могут вам помочь:

    • 0
  3. Вся структура темы строится на основе двух вариантов — template (содержание папки родительской темы namre) и stylesheet (содержание папки дочерней темы namr). Если дочерняя тема не используется, они одинаковы.

    Чтобы иметь гибкость фильтров, а не вариант доступа напрямую, соответственно есть get_template() и get_stylesheet() .

    Теперь единственное, чего не хватает, — это объединить их с расположением папки тем. Это можно сделать с помощью get_theme_root_uri() and, опять же удобно завернутого в get_template_directory_uri() and get_stylesheet_directory_uri() .

    [get_]bloginfo() with template_directory or stylesheet_directory arguments просто обертывают их, и нет особых причин использовать их таким образом. Я бы сказал, что это сбивает с толку только тем, что аргумент указывает каталог (обычно относится к локальным путям), но возвращает URL-адреса.

    Резюме:

    • используйте get_template_directory_uri() для ссылки только на родительскую тему
    • использовать только get_stylesheet_directory_uri() для дочерней темы
    • 0
  4. я использую это(dirname(get_bloginfo('stylesheet_url')))

    • 0

Оставить ответ

You must login to add an answer.