it-swarm-eu.dev

Jak získám URL adresy v PHP?

Potřebuji získat adresu URL mého adresáře motivů a odkazovat na obrázek v adresáři image/headers. Jak se to děje v PHP?

38
Michael Crenshaw

Tato funkce bude return adresář URL adresáře, takže jej můžete použít v dalších funkcích:

get_bloginfo('template_directory');

Alternativně bude tato funkce echo adresář URL adresáře do prohlížeče:

bloginfo('template_directory');

Příkladem obrázku ve složce images/headers by tedy bylo:

<img src="<?php bloginfo('template_directory'); ?>/images/headers/image.jpg" />
45
EAMann

Co @EAMann řekl, s upozorněním. Eric má pravdu o obecném přístupu ao tom, jak fungují funkce bloginfo() a get_bloginfo() ao tom, jak předat parametr 'template_directory' a získat tak hodnotu, kterou potřebujete pro (většinu) témat.

Nicméně je zde varování a že caveat je s novějšímChild Themes. Pokud používáte podřízený motiv, pak 'template_directory' pravděpodobně není to, co chcete, pokud se ve skutečnosti nepokoušíte odkazovat na obrázek, který je v adresáři nadřazeného motivu. Namísto dětských motivů, co pravděpodobně chcete, je předat stylesheet_directory (vím, já vím, že jména vám neřeknou, co jsou, ale hej, to je přesně tak, jak to je!) Půjčování poněkud z Ericovy odpovědi pomocí stylesheet_directory by vypadalo jako to (zkrátil jsem příklad tak, aby se nezabalil):

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

Pro ilustraci bodu jsem napsal rychlý samostatný soubor, který můžete v kořenovém adresáři webové stránky umístit jako test.php a spustit, aby se zjistilo, co se na něm objeví. Nejprve spusťte s pravidelným tématem, jako je TwentyTen, pak spusťte s podřízeným motivem:

<?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>';

Pokud si všimnete, že si můžete všimnout, že je mnohem více toho, co můžete předat bloginfo() a get_bloginfo(); prostudujte si kód a níže uvedený obrázek pro nápady.

Při pohledu na snímek obrazovky vidíte, že stylesheet_directory vrací stejnou věc jako 'template_directory' pro běžné téma, ale jinou hodnotu a pravděpodobně hodnotu, kterou potřebujete pro dětské téma.

 The return values of get_bloginfo() with and without a Child Theme in WordPress 
(zdroj: mikeschinkel.com )

Pro přehlednost na tomto snímku je wp30.dev doména, která běží pouze na mém lokálním počítači. To je v současné době instanci WordPress 3.0.1 a je nakonfigurován na 127.0.0.1 (stejný jako localhost) na mém notebooku a používám jej pro testování ad-hoc příklady, jako je tento. Použil jsem VirtualHostX jako pohodlí na Mac OS X, aby mi pomohl nastavit tyto soukromé non-rutinní .dev domény, ale kdokoliv to může udělat ručně úpravou souboru hosts počítače a? httpd.conf soubor.

Mimochodem, v případě, že nejste obeznámeni sChild Themeskde jsou dvě další WordPress odpovědi, které by mohly pomoci:

32
MikeSchinkel

Celá struktura motivu navazuje na dvě možnosti - template (drží nadřazenou složku motivu namre) a stylesheet (podržením podřízené složky motivu namr). Pokud není použito žádné podřízené téma, jsou stejné.

Chcete-li mít flexibilitu filtrů, spíše než přístupovou možnost přímo, jsou odpovídajícím způsobem get_template() a get_stylesheet() .

Jediné, co chybí, je zkombinovat umístění s umístěním složky motivů. To lze provést pomocí get_theme_root_uri() a opět pohodlně zabalené do get_template_directory_uri() a get_stylesheet_directory_uri() .

[get_]bloginfo() s template_directory nebo stylesheet_directory argumenty pouze zabalí tyto a tam je malý důvod používat to tak. Řekl bych, že je to jen matoucí tím, že argument říká adresář (běžně se týká místních cest), ale vrací URL.

Sumarizace:

  • použijte get_template_directory_uri() pro označení only nebo parent theme
  • použít get_stylesheet_directory_uri() na pouze nebo dítě theme
12
Rarst