क्या फ़ोल्डर्स के साथ get_template_part () का उपयोग करने का कोई तरीका है?


26

अगर फ़ोल्डर के साथ get_template_part () का उपयोग करने का कोई तरीका है तो मैं सोच रहा हूं? मेरे मुख्य फ़ोल्डर में अब बहुत सारी फाइलें हैं क्योंकि मैंने प्रत्येक पुन: प्रयोज्य तत्व को एक अलग फाइल में रखा है। मैं उन्हें तब फ़ोल्डर्स में रखना चाहूंगा।

कोडेक्स में इसके बारे में कोई जानकारी नहीं है: http://codex.wordpress.org/Function_Reference/get_template_part

जवाबों:


40

तथ्य यह है कि आप कर सकते में, मैं बुलाया मेरी विषय निर्देशिका में एक फ़ोल्डर है /partials/में उस फ़ोल्डर मैं इस तरह के रूप में फ़ाइलें latest-articles.php, latest-news.phpऔर latest-statements.phpऔर मैं का उपयोग कर इन फ़ाइलों को लोड get_template_part()की तरह:

get_template_part('partials/latest', 'news');

get_template_part('partials/latest', 'articles');

get_template_part('partials/latest', 'statements');

बस .phpफ़ाइल नाम से छोड़ना मत भूलना ।


धन्यवाद! यह इतना सरल है कि यह शर्म की बात है कि मुझे यह पता नहीं चला। मुझे यकीन था कि यह संभव नहीं है क्योंकि कोडेक्स इसका उल्लेख नहीं करता है। इस सवाल ने और भी दिलचस्प जवाब दिए लेकिन यह सबसे सरल है इसलिए यह शायद औसत व्यक्ति के लिए सबसे उपयोगी है :) (इसलिए इसे हरी टिक से चिह्नित करें)।
पॉल

1
सौभाग्य से कोडेक्स को संपादित करना संभव है, इसलिए अगले व्यक्ति को भी यही समस्या नहीं होगी। :-)
डाल्टन

<?php get_template_part('partials/file'); ?>
@ सेबेस्टियन

5

मुझे डर नहीं लग रहा है। यदि कोडेक्स में कुछ ऐसा नहीं है जिसे आप जानना चाहते हैं, तो स्रोत के लिंक का पालन करने का प्रयास करें और कोड के लिए खुद को देखें और इसे प्रबंधित करने का प्रयास करें।

मेरी नज़र थी और get_template_part फ़ंक्शन को नीचे के रूप में परिभाषित किया गया है:

function get_template_part( $slug, $name = null ) {
    do_action( "get_template_part_{$slug}", $slug, $name );

    $templates = array();
    if ( isset($name) )
        $templates[] = "{$slug}-{$name}.php";

    $templates[] = "{$slug}.php";

    locate_template($templates, true, false);
}

इससे, आप पढ़ सकते हैं, कि get_template_part फ़ंक्शन केवल एक इच्छित php फ़ाइल नाम बनाता है और फ़ंक्शन find_ememplate को कॉल करता है। यह उपयोगी नहीं है, इसलिए मुझे find_template फ़ंक्शन पर भी एक नज़र थी:

function locate_template($template_names, $load = false, $require_once = true ) {
    $located = '';
    foreach ( (array) $template_names as $template_name ) {
        if ( !$template_name )
            continue;
        if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
            $located = STYLESHEETPATH . '/' . $template_name;
            break;
        } else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
            $located = TEMPLATEPATH . '/' . $template_name;
            break;
        }
    }

    if ( $load && '' != $located )
        load_template( $located, $require_once );

    return $located;
}

Get_template_part से कॉल की गई php फ़ाइल के लिए टेंप्लेट खोजें खोजें। लेकिन आप अपने कोड से सीधे find_template कॉल कर सकते हैं । और यह उपयोगी है।

Get_template_part ('loop-sigle.php') फ़ंक्शन के बजाय इस कोड को आज़माएं (आपकी फ़ाइल आपके विषय के अंदर mydir में स्थित है):

locate_template( 'mydir/loop-single.php', true, true );

दिलचस्प शॉर्टकट, मुझे आश्चर्य है कि यदि लोडिंग अनुक्रम या फ़ाइल सामग्री पर इसका कोई नकारात्मक परिणाम है।
लोटेकसन

2

फ़ंक्शन के नोट get_template_part()कहते हैं:

नोट्स
- उपयोग: Find_template ()
- उपयोग: do_action () कॉल 'get_template_part _ {$ slug}' कार्रवाई।

विच आपको उपयोग करने की अनुमति देता है locate_template(), जो कहता है:

TEMPLATEPATH से पहले STYLESHEETPATH ​​में खोजें ताकि मूल विषय से विरासत में मिली थीम केवल एक फ़ाइल को अधिभारित कर सकें।

यदि आप TEMPLATEPATHउस उपनिर्देशिका के साथ परिभाषित करते हैं जिसका आप उपयोग करना चाहते हैं, तो get_template_part()आपके उपनिर्देशिका में फ़ाइलों की खोज करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.