نحوه قرار دادن کد در فایل functions.php قالب وردپرس

195 بازدید
یکشنبه ۲۸ شهریور ۱۳۹۵
نحوه قرار دادن کد در فایل functions.php قالب وردپرسReviewed by جواد نبوی on Sep 18Rating: 4.0

بدون شک همه ی شما آموزش هایی را خوانده اید که در آن باید کد هایی را به فایل functions.php قالب خود اضافه کنید. از این آموزش ها در وب تستر هم زیاد گذاشته ایم و در آینده خواهیم گذاشت. اما مشکلی که اغلب کاربران تازه کار دارند این است که نمیدانند این کد ها را دقیقا کجای فایل functions قالب خود بگذارند. به همین دلیل مشکلاتی برای سایتشان به وجود می آید. اگر کمی با php آشنا باشید هیچ مشکلی با اینکار نخواهید داشت. اما مسئله این است که اغلب کاربران با php آشنایی ندارند. اگر شما این مطلب را میخوانید تا جلوی مشکلات اضافه کردن کد به فایل functions.php را بگیرید، بدانید که تنها نیستید و خیلی ها مثل شما هستند. برنامه نویس های حرفه ای هم در ابتدا همینطور بودند. این فایل که مربوط به توابع پوسته است، کاربرد بسیار زیادی در شخصی سازی سایت شما دارد. در این مقاله میخواهیم نحوه قرار دادن کد در فایل functions.php قالب را به شما یاد بدهیم تا از ایجاد مشکلات برای سایتتان جلوگیری کنید.

قرار دادن کد در فایل functions.php

توجه: فایل functions.php در مسیر /wp-content/themes/yourthemename/ قرار گرفته. یعنی زمانی که وارد فایل منیجر هاست خود میشوید و فولدر public_html را باز می کنید، باید مسیر بالا را طی کنید. همچنین میتوانید از طریق بخش ویرایشگر قالب خود وردپرس نیز این فایل را ویرایش کنید. به این صورت که ابتدا از منوی سمت راست وردپرس، موس را روی گزینه نمایش بیاورید و پس از باز شدن زیر منو، روی لینک ویرایشگر کلیک کنید. سپس در صفحه باز شده، از بخش سمت چپ روی گزینه functions.php کلیک کنید. حالا وارد صفحه ویرایشگر این فایل می شوید.

قرار دادن کد در فایل functions.php

برای اینکه شیوه درست اضافه کردن کد به function.php را یاد بگیرید باید با مقدماتی ترین مفهوم php آشنا شوید. یعنی ساختار کد های php را بدانید.

<?php
 ?>

تگ <?php همان تگ شروع کد های پی اچ پی و آغاز گر دستورات این زبان است. تگ <? هم تگ پایان است و در انتهای همه ی کد ها قرار می گیرد.

دلیل اینکه شما باید با ساختار کد بالا آشنا شوید این است که بیش از ۹۰ درصد کاربرانی که در اضافه کردن کد ها به فایل functions.php به مشکل میخورند، به علت نداشتن آشنایی با این ساختار است. مثلا کد ها را بیرون این ساختار قرار می دهند. شما باید توجه داشته باشید که همه ی کد های php باید درون چنین ساختاری قرار داشته باشند. در غیر اینصورت اجرا نخواهند شد و بدتر از آن ارور هایی میدهند که باعث خرابی سایت می شود.

اولین اشتباه متداول هنگام قرار دادن کد در فایل functions.php

بعضی از کاربران هنگام قرار دادن کد در فایل functions.php، یکسری کد که از قبل در این فایل وجود داشت را میبینند و فکر میکنند هر نوع کدی را باید درون تگ های <?php و ?> قرار داد. مثلا کدی که از اینترنت گرفته اند را به صورت زیر درون فایل فانکشن خود قرار می دهند:

<?php
<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
 return 'http://www.wpbeginner.com';
}
?>
?>

 

در صورتی که این روش کاملا اشتباه است. چرا که تگ آغاز و پایان php یکبار ایجاد شده و شما نمیتوانید دوباره این دو تگ را درون تگ های اصلی ایجاد کنید. شیوه درست به صورت زیر است:

<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
 return 'http://www.wpbeginner.com';
}
?>

پس همیشه حواستان باشد تگ های <?php و ?> که آغاز کننده و پایان دهنده اصلی دستورات php هستند، فقط یکبار ایجاد می شوند، نه به صورت تو در تو.

یک مثال دیگر

برای اینکه موضوع بهتر جا بیفتد یک مثال دیگر میزنم. فرض کنید در فایل functions.php قالب شما کد های زیر وجود دارد (البته معمولا کد های بیشتری وجود دارد اما داریم مثال می زنیم):

<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'name' => 'left-sidebar',
'description' => 'left-sidebar',
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
));
?>

و شما مثلا می خواهید کد زیر را که از اینترنت گرفته اید وارد فایل فانکشن خود کنید.

<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://www.wpbeginner.com';
}
?>

خب نتیجه درست کار به یکی از دو صورت زیر خواهد بود:

<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'name' => 'left-sidebar',
'description' => 'left-sidebar',
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
));

add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://www.wpbeginner.com';
}
?>

یا:

<?php
if ( function_exists('register_sidebar') )
register_sidebar(array(
'name' => 'left-sidebar',
'description' => 'left-sidebar',
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
));
?>
<?php
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return 'http://www.wpbeginner.com';
}
?>

حتما دقت کرده اید که در نمونه اول فقط یکبار تگ های آغاز و پایان php باز و بسته شده اند و همه ی کد ها درون همان تگ اجرا می شوند. اما در نمونه دوم ما دوبار این تگ ها را باز کردیم و بستیم. اشتباه نکنید! درست است که قبلا گفته بودیم تگ های اصلی php فقط یکبار باز و بسته می شوند، اما منظورمان این بود که وقتی یکبار نوشته شدند، دیگر نمیتوانیم درونشان این تگ های اصلی را بنویسیم. ولی در کنارشان مشکلی ندارد. همانطور که در نمونه دوم می بینید.

دومین اشتباه رایج کاربران مبتدی

هر نویسنده ای سبک خاص خودش را در معرفی کد ها دارد. بعضی ها تگ های آغاز و پایان php را درون کد هایشان قرار میدهند. اما بعضی از نویسندگان کد هایشان را با استفاده از این تگ ها پوشش نمی دهند و کد خالی را به کاربر معرفی می کنند. با توجه به چیز هایی که در بالا گفتیم، نباید برایتان فرقی داشته باشد که کد به چه شکلی است. ما یک قانون کلی گفتیم و آن این بود که تگ های <?php و ?> همیشه تگ های آغاز و پایان هستند و در ابتدا و انتهای کار قرار می گیرند. بیرون از این تگ ها هیچ کدی نمیتواند قرار بگیرد و درونشان نیز هیچ تگ آغاز و پایان دیگری قرار نمیگیرد.

مثلا اگر چنین کدی به شما دادند:

function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

نباید آن را به صورت زیر درون فایل فانکشن قالبتان بگذارید:

<?php
//Tons of mumble jumble PHP code that already exists in your PHP file is here 
?>

//Then the user paste the code here (Notice the PHP tags are already closed above):

function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');

چرا که هیچ تگ آغاز و پایانی کد بالا را پوشش نمیدهد و وردپرس نمیداند که این کد اصلا چه چیزی است. باید آن را توسط تگ های <?php و ?> معرفی کنید. مثلا به شکل زیر:

<?php
//Tons of mumble jumble PHP code that already exists in your PHP file is here 
?>
<?php


function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');
?>

یا این شکلی:

 

<?php
//Tons of mumble jumble PHP code that already exists in your PHP file is here

//The new code
function custom_loginlogo() {
echo '<style type="text/css">
h1 a {background-image: url('.get_bloginfo('template_directory').'/images/login_logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_loginlogo');
?>

سخن پایانی

امیدواریم این آموزش برای شما مفید باشد. دوباره این نکته را میگویم که تگ های <?php و ?> مثل ظرف هستند و تمامی کد های php باید درون این ظرف ها قرار بگیرند. میتوانید چند ظرف داشته باشید و کد ها را درونشان بریزید ولی نمیتوانید ظرف ها را درون هم بگذارید. کنار هم باشند اشکالی ندارد. همچنین هر قطعه کد را پس از تمام شدن کد های موجود قرار دهید و درونشان نگذارید. در کل سعی کنید تمیز کار کنید و از این کثیف کاری ها در نیارید! هر چیز سر جای خودش. خیلی ساده و آسان.

تبلیغات

نویسنده (مدیر سایت)

جواد نبوی هستم. حدود 7 سالی میشه در زمینه طراحی وب و گرافیک کار می کنم و بعد از توپ دیزاین، این دومین سایت آموزش طراحی وب و گرافیک هستش که راه انداختم. امیدوارم بتونم برای همه ی شما مفید باشم.

2 دیدگاه برای “نحوه قرار دادن کد در فایل functions.php قالب وردپرس”

  1. لنگر طرح گفت:

    سلام و خسته نباشید
    ببخشید یه #سوال
    داخل صفحات قالب من هیچ نوع کد های css و یا جاوا اجرا نمیشه یعنی مثلا افزونه یوزر پرو رو نصب میکنم و وارد برگه ثبت نام و یا ورود میشم بدون هیچ استایلی نشون میده یعنی کد جاوایی که خود افزونه همراه داره رو هم نمایش نمیده و یه طرح ساده از پلاگین رو نشون میده برام

    1. جواد نبوی گفت:

      سلام
      احتمالا کد های فراخوانی استایل و جاوااسکریپت مشکل دارند یا در جای نادرستی قرار گرفته اند. در مواردی هم ناهماهنگی بعضی از افزونه ها با هم یا با قالب باعث مشکل می شود.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *