روکش مرکز ارائه پوسته و قالب وردپرس شامل قالب خبری وردپرس, قالب فروشگاهی وردپرس,قالب شرکتی وردپرس و ... به صورت رایگان و وِیژه می باشد.
سلام. خدا قوت
چطور میتونم فایلی که در پوستهی فرزند قرار داره رو در functions همان پوستهی فرزند آدرس بدم.
این فایل اسمش meta-request.php هست و باید در پوستهی اصلی در فولدری به اسم functions قرار بگیره، که وقتی توی فایل functions آدرس میدم، عمل میکنه.
آدرسی که در functions پوستهی اصلی قرار میدم و عمل میکنه باید به این شکل باشه:
require_once( LIBS_DIR .'/meta-request.php' );
اینو از جایی پیدا کردم و امتحان کردم و عمل میکنه.
اما من میخوام این فایل رو درون همون فولدر یعنی با اسم functions اما در پوستهی فرزند قرار بدم و آدرس رو هم درون فایل functions پوستهی فرزند قرارش بدم. اما همون آدرس رو توی فایل functions میذارم اما کار نمیکنه. گفتم شاید باید آدرس کامل رو بدم به این شکل:
require_once( LIBS_DIR .'F:\xampp\htdocs\mysite\wp-content\themes\betheme-child\functions\meta-request.php' );
اما بازم عمل نمیکنه. چهکار کنم؟
راستی پوستهای که انتخاب کردم null شدست. از نظر شما پوستهی خوبی هست یا نه؟ البته به این پوسته عادت کردم و اگه شما پوستهی دیگری معرفی کنید من فعلا نمیتونم این پوسته رو کنار بذارم.
درود بر شما
برای دریافت آدرس دقیق فولدر پوسته فرزند می تونید از تابع get_stylesheet_directory_uri استفاده کنید. این تابع آدرس مسیری که باید فایل style.css قالب قرار بگیره را در خودش ذخیره می کنه.
get_stylesheet_directory_uri();
دست شما درد نکنه، اما فکر کنم سوالم رو اشتباه فهمیدید. شاید هم سوال رو درست فهمیدید و جواب درستی هم دادید. به هر حال من از کد نویسی چیزی نمیدونم.
قالب BETHEME توی صفحه نوشتن نوشتهی تازه، زیر ویرایشگر متن تنظیماتی داره، توی موضوع قبلی من شما ایدهای دادید که post-type سفارشی با افزونه درست کنم، اینکارو کردم، اما زیر ویرایشگر متن این تنظیمات نشون داده نمیشه. گشتم و توی انجمن خود پوسته یه نفر همچین سوالی رو کرده بود، اما خودش جواب رو پیدا کرده بود و نوشته بود، خدا رو شکر که خودش پیدا کرده بود، چون همونطوری که میدونید، جوابایی که داده میشه، برای کسی که پوسته رو نخریده و با کدش وارد انجمن نشده، نشون داده نمیشه، من اینو کمکی از طرف خدا میدونم. چون واقعا هیچ جایی نمیتونستم پیدا کنم، مگر انجمن خود پوسته.
من آدرس پوستهی فرزند رو میدونم، در واقع دارم با چشمای خودم میبینم چون از هاست مجازی استفاده میکنم و پوستهی فرزند توی کامپیوترمه، مگر آدرسی که تو سوال گفتم با آدرسی که باید توی functions قرار بدم، فرق میکنه؟ یعنی توی کد نویسی آدرس دادن یه جور دیگست؟
اگه ادرس دهی توی کد نویسی فرق میکنه، تابعی که گفتید رو باید کجا قرار بدم؟ و چی کار کنم تا آدرس رو بده؟ البته شما گفتید آدرس style.css رو میده که من اصلا به این فایل کاری ندارم، مگر اینکه منظور شما این باشه که از این طریق آدرس دهی درست رو بفهمم و مطابق با همین آدرس، آدرس فایل مورد نظرم رو بدم، به هر حال نمیدونم تابع رو چی کار کنم.
ببخشید طولانی شد.
خوب مگه شما نمی خواهید با استفاده از php در فایل functions.php به یک فایل دیگه مثل meta-request.php آدرس بدید, یا به اصلاح اون را فراخوانی کنید؟ تابع get_stylesheet_directory_uri آدرس کامل فولدر قالب فرزند رو بر می گردونه (مثل : name.com/wp-content/themes/rokesh-child-theme) یا اگر بخواهید مسیر فولدر قالب در درون سرور (مثل : /home/user/public_html/wp-content/themes/rokesh-child-theme) را فراخوانی کنید میشه از تابع get_stylesheet_directory استفاده کرد.
به شکل زیر هم می تونید از این دو تابع استفاده کنید:
require_once( get_stylesheet_directory() . '/meta-request.php' );
سلام استاد.
بله میخوام همین کارو کنم. دست شما درد نکنه، ببخشید، من دقت نکرده بودم که توی فایل functions فراخوانی کردن همهی فایلای پوستهی فرزند به شکلی که گفتید هست،
require_once( get_stylesheet_directory() . '/meta-request.php' );
خب از اول اینو میگفتید که اشتباه نکنم. دستتون درد نکنه. اما بازم عمل نمیکنه؟ نمیدونم چرا؟ البته انگار یه قسمتی کم داره، مثال از فراخوانی کردن فایلای دیگه توی functions پوستهی فرزند براتون میزنم که ببینید مشکل چیه؟
load_child_theme_textdomain( 'betheme', get_stylesheet_directory() . '/languages' );
یا
wp_enqueue_style( 'mfn-child-style', get_stylesheet_directory_uri() .'/style.css' );
عاقا همین الآن کاری کردم که درست شد. بالا گفتم که فایلی که میخوام توی پوستهی اصلی شامل کنم باید توی فولدر functions قرار بگیره، چون شبیه همین فایل مثلا meta-page.php توی همین پوشه قرار داره، منم پیش خودم گفتم اگه بخوام همین کارو توی پوستهی فرزند بکنم، باید همین فولدر رو بسازم و فایل meta-request.php رو توی این فولدر قرار بدم، تابعی که گفتید رو گذاشتم ولی عمل نکرد. این دفعه فایلو توی فولدر اصلی پوستهی فرزند قرار دادم و عمل کرد. عاقا دست شما درد نکنه از راهنماییای که کردید. حالا سوالی پیش اومده، هر فایل جدیدی که خودمون ساختیم فرقی نمیکنه که توی پوستهی اصلی کجا قرار داره، باید توی فولدر اصلی همینطور رها کنیم و توی هیچ فولدر جداگانهای توی پوستهی فرزند قرار ندیم؟ اونوقت تکلیف فایلایی که توی پوستهی اصلی از قبل وجود داره و ما یه سری تغییراتی روش انجام دادیم چی میشه؟ یعنی اینارو هم باید همینطوری رها کنیم؟
به جای تابع get_stylesheet_directory از dirname( __FILE__ ) استفاده کنید ببینید درست میشه یا نه.
require_once( dirname( __FILE__ ) . '/meta-request.php' );
می تونید فولدری بسازید و فایل های جدیدی که ایجاد کردید را داخل اون فولدر قرار بدید. بعد باید قبل از اسم فایل اسم اون فولدر را هم وارد کنید. مثلا اگر فایل ها را داخل فولدر inc در فولدر اصلی قالب قرار داده باشید برای فراخوانی اون فایل ها باید به شکل زیر عمل کنید.
require_once( dirname( __FILE__ ) . '/inc/meta-request.php' );
از این که پیگیر مسئله هستید از شما تشکر میکنم، تابع قبلی هم مشکلی نداشت و همونطوری که گفتید باید اسم فولدری که توش قرار دادم هم باید وارد کنم تا عمل کنه. این تابع جدید هم
require_once( dirname( __FILE__ ) . '/meta-request.php' );
در عمل فرقی با قبلی نکرد. دست شما درد نکنه. هر دو عمل میکنه، حالا این دو تابع چه فرقی با هم میکنن؟ اگه وقتش رو ندارید لازم نیست به این سوال جواب بدید، فقط کنجکاوم. ببخشید هی مزاحم میشم. فکر کنم یه موضوع جدید درست کنم، چون دوباره یه سوال جدید پیش اومده.
تابع get_stylesheet_directory یکی از توابع وردپرس هست که می تونید نحوه عملکرد اون را داخل فایل wp-includes/theme.php خط 165 مشاهده کنید. استفاده از این تابع برای قالب وردپرس بهتر هست چون اگر بعدا آدرس سایت شما تغییر کنه یا به هر نحوی تغییری در مسیر پوشه ها توسط هک های وردپرس ایجاد بشه این تابع بهتر می تونه مسیر را شناسایی کنه. اما تابع dirname یکی از توابع پیشفرض زبان برنامه نویسی PHP هست که سرعت اجرای اون از تابع get_stylesheet_directory که برای وردپرس هست بیشتره ولی برخی مواقع (که خیلی کم پیش میاد) ممکن هست آدرس درست پوشه را برنگردونه. در مورد تاپیک جدید هم مشکلی نیست برای هر سوالی که دارید با خیال راحت تاپیک بزنید تا در موردش بحث کنیم.
دست شما درد نکنه، عجب توضیحی بود، کامل و مختصر، همچنین مفید.
احساس کردم وقتی تابع dirname رو استفاده میکنم سرعتش کمی بیشتره. جالب بود.
سلام و خسته نباشید
من نمیتونم فایل های css در child theme ام رو فراخوانی کنم هرکار بگین کردم اما انگار تابع functions.php من درست عمل نمیکنه .
خییییییییلی ممنن میم کمکم کنید.
کد functions.php ام اینه:
<?php
function enqueue_webmarket_styles() {
wp_enqueue_style( ‘style’, get_template_directory_uri().’/style.css’ );
wp_enqueue_style( ‘rtl’, get_template_directory_uri().’/rtl.css’ );
wp_enqueue_style( ‘main’, get_template_directory_uri().’/assets/stylesheets/main.css’ );
wp_enqueue_style( ‘bootstrap’, get_template_directory_uri().’/assets/stylesheets/bootstrap.css’ );
wp_enqueue_style( ‘style’, get_stylesheet_directory_uri() . ‘/style.css’, array( ‘style’ ) , wp_get_theme() ->get (‘Version’) );
wp_enqueue_style( ‘rtl’, get_stylesheet_directory_uri() . ‘/rtl.css’, array( ‘rtl’ ) , wp_get_theme() ->get (‘Version’) );
wp_enqueue_style( ‘main’, get_stylesheet_directory_uri() . ‘/assets/stylesheets/main.css’, array( ‘main’ ) , wp_get_theme() ->get (‘Version’) );
wp_enqueue_style( ‘bootstrap’, get_stylesheet_directory_uri() . ‘/assets/stylesheets/bootstrap.css’, array( ‘bootstrap’ ) , wp_get_theme() ->get (‘Version’) );
}
add_action( ‘wp_enqueue_scripts’, ‘enqueue_webmarket_styles’ );
?>
و بالای تمام فایلهای css فرزند این کامنتو گذاشتم:
/*
Theme Name: Webmarket WP Child
Theme URI: http://www.meroeh.com/wp-content/themes/webmarket-child
Author: Meroeh
Author URI: http://www.meroeh.com/
Description: Webmarket WP Child Theme
Version: 1.0.0
Template: webmarket-wp
Tags: wordpress, business, responsive, slider, blog, cart, commerce, WooCommerce, wp, light, optimized, shop, shopping, slider, theme, webmarket
License: GPL 2.0
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: webmarket_wp
*/
به نظرم اصلا” فراخوانی فایلهای css فرزند انجام نمیشه چون تغییرات فایل های css فرزندم اجرا نمیشن.
ممنونم از پاسخگویی سریعتون
من تونستم برای rtl.css تغییراتم رو اعمال کنم و فایل rtl.css رو توی روت childthemeام قرار دادم و درست شد اما فایل والد من دوتا فایل css دیگه بنامه main و bootstrap هم داره که مسر اونها در قالب والد اینه:
parent-template/assets/stylesheets/main.css
parent-template/assets/stylesheets/bootstrap.css
حالا فایل functions.php من که توی روت child theme هست کدش اینه:
<?php
add_action( ‘wp_enqueue_scripts’, ‘my_theme_enqueue_styles’ );
function my_theme_enqueue_styles() {
wp_enqueue_style( ‘parent-style’, get_template_directory_uri() . ‘/style.css’ );
}
?>
و داره درست کار میکنه. بالای همه فایلهای css هم کامنت درست گذاشتم. حالا فقط مونده اینکه فایل main.css فرزندم جای والد خونده بشه.
من اومدم توی فلدر قالب فرزندم دقیقا” همون فلدرهای assets و stylesheets رو که والد داشت توی فرزند هم ایجاد کردم و main.css رو توی این فلدرها(عین مسیر والد) گذاشتم.
حالا مونده لطف کنید کمکم کنید که چه تغییری توی فایل functions.php یا هر جای دیگه باید بدم تا man.css فرزند خونده بشه؟
ممنونم
من تونستم برای rtl.css تغییراتم رو اعمال کنم و فایل rtl.css رو توی روت childthemeام قرار دادم و درست شد اما فایل والد من دوتا فایل css دیگه بنامه main و bootstrap هم داره که مسر اونها در قالب والد اینه:
parent-template/assets/stylesheets/main.css
parent-template/assets/stylesheets/bootstrap.css
حالا فایل functions.php من که توی روت child theme هست کدش اینه:
<?php
add_action( ‘wp_enqueue_scripts’, ‘my_theme_enqueue_styles’ );
function my_theme_enqueue_styles() {
wp_enqueue_style( ‘parent-style’, get_template_directory_uri() . ‘/style.css’ );
}
?>
و داره درست کار میکنه. بالای همه فایلهای css هم کامنت درست گذاشتم. حالا فقط مونده اینکه فایل main.css فرزندم جای والد خونده بشه.
من اومدم توی فلدر قالب فرزندم دقیقا” همون فلدرهای assets و stylesheets رو که والد داشت توی فرزند هم ایجاد کردم و main.css رو توی این فلدرها(عین مسیر والد) گذاشتم.
حالا مونده لطف کنید کمکم کنید که چه تغییری توی فایل functions.php یا هر جای دیگه باید بدم تا man.css فرزند خونده بشه؟
ممنونم
انجمن ‘وردپرس’ برای جستار ها و پاسخ ها جدید بسته است.