WordPress Template Tags

WordPress Template Tags – हम जब भी कोई Theme Create करते हैं, तो अपने Webpage को कुछ Basic Parts में Divide करते हैं। क्योंकि ये Parts हमारी Site के हर Page के लिए Use होते हैं और Page के लिए Common भी होते हैं।

उदाहरण किसी भी Website में हर Page का Header, Footer, Content Area, Sidebar आदि ऐसे हिस्से होते हैं, जो Website के हर Page के लिए Common होते हैं और इन सभी हिस्सों को Create करने से सम्बंधित Codes को विभिन्न Templates में बार-बार लिखने के बजाय इन्हें अलग File में लिख लिख जाता है तथा विभिन्न Template Files में इन हिस्सों को WordPress Template Tag Functions द्वारा Include कर लिया जाता है।

WordPress में मूल रूप से पांच तरह की Files होती हैं, जिन्हें विभिन्न प्रकार के Templates में Include करने के लिए पांच Template Tags का प्रयोग किया जाता है। ये Template Tags निम्नानुसार हैं:

get_header() Template Tag API Function

किसी भी Website का Head Section, जो कि Opening <body> Tag से पहले का हिस्सा होता है, WordPress Theme में header.php नाम की एक File में Specify कर लिया जाता है और इस हिस्से को विभिन्न Template Files में get_header() Template Tag द्वारा Include किया जाता है। जैसे:

File Name: wp-content/themes/bccfalna/header.php
<!DOCTYPE html>
<html>
    <head>
        <title><?php bloginfo('name'); ?></title>
    </head>
    <body>

जब एक बार हम header.php File Create कर देते हैं, तो किसी भी Template File में इस Header Information को प्राप्त करने के लिए हमें केवल get_header() Template Tag को Call करना होता है। जैसे:

File Name: wp-content/themes/bccfalna/index.php
<?php get_header(); ?>
    </body>
</html>

जब हम इस तरह से अपने Webpage के Header Information को header.php नाम की एक अलग File में Place कर देते हैं, तो get_header() Template Tag Function header.php नाम की File के Content को Page Parsing के समय Exactly उसी स्थान पर Include कर देता है, जिस स्थान पर हमने get_header() Function को Call किया होता है।

परिणामस्वरूप हमें हमारा Resultant Webpage Exactly वैसा ही दिखाई देता है, जैसा तब दिखाई देता है, जब हम header.php File Create करने के स्थान पर Header Information को सीधे ही Template File में Specify करते हैं।

File Name: wp-includes/general-template.php
function get_header( $name = null ) {
	do_action( 'get_header', $name );

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

	$templates[] = 'header.php';

	// Backward compat code will be removed in a future release
	if ('' == locate_template($templates, true))
		load_template( ABSPATH . WPINC . '/theme-compat/header.php');
}

इस Template Tag Function के Call होते ही ये Function सबसे पहले “get_header” नाम का एक Action Hook Fire करता है, जिसके साथ हम हमारा Custom Callback Function Hook करके किसी Specific Code को हमारे Webpage में Header Information Include होने से पहले Execute कर सकते हैं और अपने Webpage के Header Information को Modify कर सकते हैं।

फिर ये Function $templates नाम का एक Array Create करता है और यदि get_header() Function में Argument के रूप में कोई String या नाम Specify किया गया हो, तो $name Variable उस नाम से Set हो जाता है। परिणामस्वरूप निम्नानुसार Specified if Statement True Return करता है:

if ( isset($name) )

और if Statement के True होने की स्थिति में निम्नानुसार if Statement Block में Specified Statement Execute होता है:

$templates[] = header-{$name}.php“;

ये Statement $templates नाम के Array में “header-” शब्द के साथ उस नाम को Specify करता है, जिसे हमने get_header() Function में Argument की तरह Specify किया होता है और अन्त में “.php” String Append कर के लिए नया File Name Create कर लेता है।

उदाहरण के लिए यदि हमने get_header() Function में Argument के रूप में “html5” String Specify किया हो, तो इस Function में Specified if Statement $templates नाम के Array में Current Element Position पर “header-html5.php” नाम के File Name को String के रूप में Store कर देगा और निम्नानुसार अगले Statement को Execute करके $templates Array की अगली Position पर “header.php” नाम के Filename को String की तरह Store कर देगा-

$templates[] = header.php‘;

इस प्रकार से अब $templates नाम के Array में header-html5.phpheader.php नाम की दो Files दो अलग Index Number पर Places होंगी। लेकिन यदि get_header() Function Call करते समय इस Function में किसी Argument को Specify न किया गया हो, तो इस Function का if Statement false Return करता है, परिणामस्वरूप $templates नाम के Array में केवल एक ही File Name यानी header.php Stored रहता है।

इस $templates नाम के Array में Stored Filenames के आधार पर अब get_header() Function, locate_template() नाम के API Function को Call करते हुए इस बात का पता लगाने की कोशिश करता है कि $templates नाम के Array में Elements के रूप में जो File Name Stored हैं, उन नामों से सम्बंधित File, Currently Activated WordPress Theme में Physically Exist है या नहीं।

locate_template() API Function

इस Function को WordPress की template.php Core File में निम्नानुसार Define किया गया है:

File Name: wp-includes/template.php
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_header() Function द्वारा इस locate_template() Function को Call किया जाता है, तो इस Function में $templates नाम के Array को First Argument के रूप में Pass किया जाता है। जबकि दूसरे Argument के रूप में true Specify करके हम WordPress को इस बात का Instruction देते हैं, कि यदि $templates Array में Stored String के नाम की File, Currently Activated Theme में Physically Exist हो, तो उस नाम की File को load_template() API Function का प्रयोग करके Load कर दें, ताकि उसी Template File पर आधारित Information Generate हो।

इस Function में WordPress Engine Enter होते ही सबसे पहले $located नाम का एक Variable Create करता है, जिसमें Empty String को Store किया जाता है। चूंकि पहले Argument के रूप में आने वाला $templates एक Array है, इसलिए एक foreach Loop द्वारा इस Array में Stored विभिन्न Filenames को One by One Scan किया जाता है।

यानी सबसे पहले निम्न if Statement Execute होकर $templates के Array के First Filename को इस बात के लिए ज्मेज करता है कि उस नाम की File STYLESHEETPATH पर Exist है या नहीं:

	if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
		$located = STYLESHEETPATH . '/' . $template_name;
		break;
	}

यदि $template_name नाम के Variable में Stored नाम की File STYLESHEETPATH Folder में Exist हो, तो if Statement true होने की स्थिति में WordPress Control if Statement Block में Enter करता है और $located नाम के Variable में Template File का Path Store कर देता है और break Statement Execute करके Loop से Exit करते हुए फिर से get_header() Function में पहुंच जाता है।

लेकिन यदि $template_name नाम के Variable में Stored नाम की File STYLESHEETPATH Folder में Exist न हो, तो if Statement false होने की स्थिति में WordPress Control if Statement Block में Enter नहीं करता बल्कि निम्नानुसार अगले elseif Statement को Test करता है:

	} else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
		$located = TEMPLATEPATH . '/' . $template_name;
		break;
	}

ये Statement इस बात को Check करता है कि यदि $template_name नाम के Variable में Stored नाम की File TEMPLATEPATH Folder में Exist हो, तो if Statement true होने की स्थिति में WordPress Control if Statement Block में Enter करता है और $located नाम के Variable में Template File का Path Store कर देता है और break Statement Execute करके Loop से Exit करते हुए फिर से get_header() Function में पहुंच जाता है।

लेकिन यदि $template_name नाम के Variable में Stored नाम की File TEMPLATEPATH Folder में भी Exist न हो, तो if Statement false होने की स्थिति में WordPress Control if Statement Block में Enter नहीं करता बल्कि $templates Array में Stored अगले Filename के लिए उपरोक्त Process को फिर से Repeat करता है और ये Repetition तब तक चलता रहता है, जब तक कि $templates Array में Stored विभिन्न Filenames में से किसी एक File का Path $located Variable में Store नहीं हो जाता।

locate_template() Function वास्तव में $templates Array में Stored विभिन्न File Names में से सबसे पहले Most Priority वाले Template को Search करता है। यानी सबसे पहले Index Number 0 पर Stored Filename वाले Template को Search करता है।

यदि ये Template प्राप्त नहीं होताए तो अगले Index Number पर Stored नाम के Template को Search करता है और ये प्रक्रिया तब तक चलती रहती है, जब तक कि Most Appropriate Template का Path $located Variable में Store नहीं हो जाता।

यदि $templates Array में Stored किसी भी Filename का Template Currently Activated Theme में Exist न हो, तो अन्त में ये Function header.php नाम की File को ही Load कर देता है लेकिन यदि header.php File भी Exist न हो, तो ये Function एक Error Return करता है।

WordPress को $templates Array में Specified विभिन्न Filenames में से जो भी Template प्राप्त होता है, वह उस Template के Path को $located Variable में Store करने के बाद निम्नानुसार अगला if Statement Code Execute होता है:

if ( $load && != $located )

चूंकि locate_template() Function को Call करते समय दूसरे Argument के रूप में “true” मान Specify किया था, जो कि इस $load नाम के Variable में Stored था। इसलिए इस if Statement द्वारा अब ये Test किया जाता है कि $located नाम के Variable में किसी भी Template का Path Exist है या इसमें केवल Empty String Stored है।

यदि $located Variable में केवल Empty String हो, तो “” != $locatedtrue Return करेगा। परिणामस्वरूप if Statement Finally True Return करेगा और WordPress Control if Statement Block में Enter करेगा, जहां उसे निम्न Statement प्राप्त होगा-

load_template( $located, $require_once );

ये Statement load_template() API Function को Call करेगा और $located Variable में Stored Template File के Content को get_header() Function के Call करने की Position पर Include कर लेगा।

Read more …

  • load_template() API Function
  • get_footer() Template Tag API Function
  • get_sidebar() Template Tag API Function
  • get_search_form() Template Tag API Function
  • comments_template() Template Tag API Function
  • Including Template-Part Files
  • Locating Template

WordPress in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Advance WordPress in Hindi | Page: 835 | Format: PDF

BUY NOW GET DEMO REVIEWS