it-swarm.asia

كيف يمكنني الحصول على عنوان URL للموضوع في PHP؟

أحتاج إلى الحصول على عنوان URL الخاص بدليل السمات الخاص بي للإشارة إلى صورة في دليل صورة/رؤوس النسق. كيف يتم ذلك في PHP؟

38
Michael Crenshaw

ستقوم هذه الوظيفة بإرجاع عنوان URL الخاص بدليل السمات حتى يمكنك استخدامه في وظائف أخرى:

get_bloginfo('template_directory');

بدلاً من ذلك ، هذه الوظيفة سوف صدى عنوان URL الخاص بدليل السمات إلى المتصفح:

bloginfo('template_directory');

لذلك سيكون مثال لصورة في مجلد السمات images/headers هو:

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

ما قاله {EAMann مع تحذير. إريك على صواب حول النهج العام وكيف تعمل الدالتان bloginfo() و get_bloginfo() وحول كيفية تمرير المعلمة 'template_directory' للحصول على القيمة التي تحتاجها للسمات (الأكثر).

ومع ذلك ، هناك تحذير و تحذير مع الأحدثسمات الطفل. إذا كنت تستخدم سمة فرعية ، فربما لا يكون 'template_directory' هو ما تريده إلا إذا كنت تحاول بالفعل الرجوع إلى صورة موجودة في دليل السمة الأصل. بدلاً من ذلك بالنسبة للمواضيع الفرعية التي ربما تريدها هي تمرير stylesheet_directory (أعرف ، أعلم ، الأسماء لا تخبرك بما هي عليه ولكن مهلا ، هذه هي الطريقة نفسها!) الاقتراض إلى حد ما من رد Eric باستخدام 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' لموضوع عادي ولكن قيمة مختلفة ، وربما القيمة التي تحتاجها لسمة فرعية.

 The return values of get_bloginfo() with and without a Child Theme in WordPress 
(المصدر: mikeschinkel.com )

للتوضيح في لقطة الشاشة هذه ، wp30.dev هو مجال يعمل فقط على جهاز الكمبيوتر المحلي الخاص بي. إنه حاليًا مثيل لبرنامج WordPress 3.0.1 وتم تهيئته على 127.0.0.1 (مثل localhost) على الكمبيوتر المحمول الخاص بي وأستخدمه لاختبار أمثلة مخصصة مثل هذا. لقد استخدمت VirtualHostX كراحة على Mac OS X لمساعدتي في إعداد مجالات .dev الخاصة غير القابلة للتوجيه ولكن يمكن لأي شخص القيام بذلك يدويًا عن طريق تحرير ملف مضيفات الكمبيوتر و؟ ملف httpd.conf.

بالمناسبة ، في حال لم تكن معتادًا علىالمظاهر التابعة للطفلحيث توجد إجابات ووردبريس أخرى قد تساعد:

32
MikeSchinkel

تعتمد بنية السمة بأكملها على أعلى خيارين - template (يحمل مجلد السمة الأصل namre) و stylesheet (يحمل مجلد السمة التابعة namr). إذا لم يكن هناك موضوع الطفل تستخدم هذه هي نفسها.

للحصول على مرونة المرشحات ، بدلاً من خيار الوصول مباشرة ، هناك get_template() و get_stylesheet() .

الآن الشيء الوحيد المفقود هو الجمع بين تلك مع موقع مجلد السمات. يمكن القيام بذلك مع get_theme_root_uri() وملفوفة مرة أخرى بشكل مريح في get_template_directory_uri() و get_stylesheet_directory_uri() .

[get_]bloginfo() مع الوسيطات template_directory أو stylesheet_directory هي مجرد التفاف لهذه وليس هناك سبب وجيه لاستخدامها على هذا النحو. أود أن أقول إنه أمر محير فقط من خلال وجود دليل يقول وسيطة (عادة ما يرتبط بالمسارات المحلية) ، ولكن بإرجاع عناوين URL.

Sumary:

  • استخدم get_template_directory_uri() للإشارة إلى فقط أو أصل سمة
  • استخدم get_stylesheet_directory_uri() إلى فقط أو تابعة سمة
12
Rarst