mhazami
تازه وارد
سلام دوستان ، عیدتون مبارک :69:
معمولا سایت هایی که با فیلم و سریال سر و کار دارن همیشه میخوان اطلاعات فیلم یا سریال رو ضمیمه مطلبشون کنن
اطلاعاتی از قبیل نام نویسنده ، بازیگران ، کارگردان ، رتبه imdb ، رتبه منتقدین و ....
خب راه معمولیش اینه که از طریق زمینه دلخواه این اطلاعات رو دستی وارد کنید. که با استفاده از افزونه ACF خیلی کار راحتی ئه
اما امروز میخوام بهتون ترفندی رو اموزش بدم که اطلاعات به صورت خودکار دریافت میشه ، جالب اینجاست نیازی به هیچ افزونه ای نیست و فقط با function.php کار میکنیم.
خب طبق معمول هر آموزش اول از فایل function.php تون یه نسخه کپی بگیرید که اگه اتفاقی پیش اومد بتونید نسخه کپی رو جایگزین کنید.
بعد به سایت
سایت های دیگه ای هم هستن مثل TMDB که اطلاعات غنی تری رو به شما میدن اما خب اینجور سایت ها هم قوانین خاص خودشون رو دارن و باید ازشون کلید API بگیرید و ... تنظیماتشم کمی سخته.
حالا برای آشنایی بیشتر با OMDB روی لینک زیر کلیک کنید.
طبق گفته های خود سایت این آدرس فیلم true grit که مال سال 1969 هست رو پیدا میکنه و اطلاعات اون رو برمیگردونه
قالب پیشفرض خروجی JSON هست که درک و فهمش ممکنه کمی دشوار باشه برای همین من پیشنهاد میکنم از قالب خروجی XML استفاده کنید که این آمورش هم بر اساس همین قالبه.
آشنایی با پارامتر ها
پارامتر S از نوع رشته درنظر گرفته شده و کار جستوجو (search) رو انجام میده
به خاطر داشته باشید که این پارامتر موارد مشابه رو بهتون نشون میده و اطلاعات کلی فیلم رو به شما نمیده.
پارامتر I این پارامتر هم از نوع رشته اس ، و اساس کاریش ID یا شناسه مطلب در سایت IMDB ئه
در این مثال
پیشنهاد من اینه برای دسترسی دقیق تر به اطلاعات یک سریال از شناسه imdb استفاده کنید.
پارامتر T این پارامتر مثل دو پارامتر بالا از نوع رشته اس و فقط اطلاعات یک فیلم رو برمیگردونه یعنی اگه شما اسم مشابه ای رو به کار ببرید در خروجی با پیغام Movie not found! مواجه میشید پس در مقدار دهی به این پارامتر باید حتما نام دقیق فیلم رو وارد کنید بدون حتی یک فاصله اضافه یا کم.
پارامتر Y هم که از اسمش پیداست بیانگر سال ئه و مکمل پارامتر T ئه یعنی برای دسترسی دقیق به اطلاعات یک فیلم حتما باید سال اون رو به صورت جداگانه در این پارامتر بریزید.
پارامتر R هم به معنای resault ئه و قالب خروجی رو تعیین میکنه (مقدار پیشفرض json)
پارامتر plot هم میگه که خلاصه داستان رو نمایش بدم یا کل داستان
استفاده از API در PHP
خب ما به دو زمینه دلخواه نیاز داریم. یکی برای وارد کردن نام فیلم و دومی برای وارد کردن سال تولید.
ساخت این زمینه دلخواه به عهده خود شماست چون کار چندان سختی نیست میتونید از افزونه AFC کمک بگیرید (من در این آموزش همین کار رو کردم)
اول از همه یک function تعریف میکنیم .
بعد میرسیم به دستورات داخل تابع(function)
توضیحات: خط اول که مال افزونه ACF ئه و مقدار زمینه دلخواه postname رو داخل متغیر pname میریزه
خط دوم که خیلی مهمه یه جورایی اگه نباشه در گرفتن اطلاعات دچار مشکل میشید این خط میگه مقدار pname هرچی که بود با استفاده از تابع str_replace بگرد توش اگه فاصله (فضای خالی یا همون space) بود به جاش %20 رو قرار بده (%20 منظور باقیمانده تقسیم 20 نیست) معادل فضای خالی در آدرس های اینترنتی %20 ئه و اگه این کار رو انجام ندید در آدرس اینترنتی فضای خالی حساب نمیشه و چون از پارامتر T استفاده کردیم دیگه اطلاعات رو برنمیگردونه.
خط سوم هم که اطلاعات زمینه سال رو در متغیر year میریزه.
پر کردن پارامتر های omdb و گرفتن خروجی
توضیحات: خط اول محتویات آدرس رو در متغیر url میریزه با استفاده از تابع file_get_contents
خط دوم محتویات رو لود میکنه (درواقع این تابع کارش اینه که دستورات xml رو شناسایی کنه)
خب با توجه به نوع دست خروجی xml ما نیاز داریم به تابعی که خصوصیات تگ movie رو برگردونه
api های دیگه ممکنه هر مقدار رو در یک تگ بریزن ولی این api یک تگ داره و همه اطلاعات رو در قالب خصوصیات اون تگ نمایش میده.
و خط اخر هم که برای قرار دادن مقدار عملیات در تابع به کار میره (اینم بگم تابه attributes از نوع آرایه اس)
نحوه استفاده از تابع
آدرس بالا رو باز کنید.
به عنوان مثال اگه بخوایم نام کارگردان رو از فایل xml استخراج کنیم این دستور رو می نویسیم
توجه داشته باشید که نام خصوصیت تگ movie رو باید بنویسید.
به همین سادگی ! تموم شد حالا تابع رو هرجایی که خواستید با پارامتر دلخواهتون صدا بزنید که اطلاعات مورد نظر رو برگردونه.
پروژه ای هم که این کار رو روش انجام دادم
کد کامل آموزش
معمولا سایت هایی که با فیلم و سریال سر و کار دارن همیشه میخوان اطلاعات فیلم یا سریال رو ضمیمه مطلبشون کنن
اطلاعاتی از قبیل نام نویسنده ، بازیگران ، کارگردان ، رتبه imdb ، رتبه منتقدین و ....
خب راه معمولیش اینه که از طریق زمینه دلخواه این اطلاعات رو دستی وارد کنید. که با استفاده از افزونه ACF خیلی کار راحتی ئه
اما امروز میخوام بهتون ترفندی رو اموزش بدم که اطلاعات به صورت خودکار دریافت میشه ، جالب اینجاست نیازی به هیچ افزونه ای نیست و فقط با function.php کار میکنیم.
خب طبق معمول هر آموزش اول از فایل function.php تون یه نسخه کپی بگیرید که اگه اتفاقی پیش اومد بتونید نسخه کپی رو جایگزین کنید.
بعد به سایت
لینک ها تنها برای اعضای سایت قابل نمایش است.
مراجعه کنید (استفاده از این api بسیار سادس و مهم تراز همه هیلتر نیست) قبلا میشد از خود سایت IMDB استفاده کرد اما مدتیه که برای گرفتن API باید حتما ثابت کنید که یک شهروند آمریکایی هستید و یه فرم طویل رو امضا کنید.سایت های دیگه ای هم هستن مثل TMDB که اطلاعات غنی تری رو به شما میدن اما خب اینجور سایت ها هم قوانین خاص خودشون رو دارن و باید ازشون کلید API بگیرید و ... تنظیماتشم کمی سخته.
حالا برای آشنایی بیشتر با OMDB روی لینک زیر کلیک کنید.
لینک ها تنها برای اعضای سایت قابل نمایش است.
طبق گفته های خود سایت این آدرس فیلم true grit که مال سال 1969 هست رو پیدا میکنه و اطلاعات اون رو برمیگردونه
قالب پیشفرض خروجی JSON هست که درک و فهمش ممکنه کمی دشوار باشه برای همین من پیشنهاد میکنم از قالب خروجی XML استفاده کنید که این آمورش هم بر اساس همین قالبه.
آشنایی با پارامتر ها
پارامتر S از نوع رشته درنظر گرفته شده و کار جستوجو (search) رو انجام میده
به خاطر داشته باشید که این پارامتر موارد مشابه رو بهتون نشون میده و اطلاعات کلی فیلم رو به شما نمیده.
پارامتر I این پارامتر هم از نوع رشته اس ، و اساس کاریش ID یا شناسه مطلب در سایت IMDB ئه
در این مثال
لینک ها تنها برای اعضای سایت قابل نمایش است.
tt0460649/?ref_=nv_sr_1 قسمت قرمز رنگ شناسه IMDB ئهپیشنهاد من اینه برای دسترسی دقیق تر به اطلاعات یک سریال از شناسه imdb استفاده کنید.
پارامتر T این پارامتر مثل دو پارامتر بالا از نوع رشته اس و فقط اطلاعات یک فیلم رو برمیگردونه یعنی اگه شما اسم مشابه ای رو به کار ببرید در خروجی با پیغام Movie not found! مواجه میشید پس در مقدار دهی به این پارامتر باید حتما نام دقیق فیلم رو وارد کنید بدون حتی یک فاصله اضافه یا کم.
پارامتر Y هم که از اسمش پیداست بیانگر سال ئه و مکمل پارامتر T ئه یعنی برای دسترسی دقیق به اطلاعات یک فیلم حتما باید سال اون رو به صورت جداگانه در این پارامتر بریزید.
پارامتر R هم به معنای resault ئه و قالب خروجی رو تعیین میکنه (مقدار پیشفرض json)
پارامتر plot هم میگه که خلاصه داستان رو نمایش بدم یا کل داستان
استفاده از API در PHP
خب ما به دو زمینه دلخواه نیاز داریم. یکی برای وارد کردن نام فیلم و دومی برای وارد کردن سال تولید.
ساخت این زمینه دلخواه به عهده خود شماست چون کار چندان سختی نیست میتونید از افزونه AFC کمک بگیرید (من در این آموزش همین کار رو کردم)
اول از همه یک function تعریف میکنیم .
کد:
function OMDB($action) {}
کد:
$ptitle=get_field( "postname" );
$ptitle =str_replace(" ", '%20',$ptitle);
$pyear=get_field( "year" );
خط دوم که خیلی مهمه یه جورایی اگه نباشه در گرفتن اطلاعات دچار مشکل میشید این خط میگه مقدار pname هرچی که بود با استفاده از تابع str_replace بگرد توش اگه فاصله (فضای خالی یا همون space) بود به جاش %20 رو قرار بده (%20 منظور باقیمانده تقسیم 20 نیست) معادل فضای خالی در آدرس های اینترنتی %20 ئه و اگه این کار رو انجام ندید در آدرس اینترنتی فضای خالی حساب نمیشه و چون از پارامتر T استفاده کردیم دیگه اطلاعات رو برنمیگردونه.
خط سوم هم که اطلاعات زمینه سال رو در متغیر year میریزه.
پر کردن پارامتر های omdb و گرفتن خروجی
کد:
$url=file_get_contents("http://www.omdbapi.com/?t=".$ptitle."&y=".$pyear."&r=XML");
$xml=simplexml_load_string($url);
$attr = $xml->movie[0]->attributes();
return $attr[$action];
خط دوم محتویات رو لود میکنه (درواقع این تابع کارش اینه که دستورات xml رو شناسایی کنه)
خب با توجه به نوع دست خروجی xml ما نیاز داریم به تابعی که خصوصیات تگ movie رو برگردونه
api های دیگه ممکنه هر مقدار رو در یک تگ بریزن ولی این api یک تگ داره و همه اطلاعات رو در قالب خصوصیات اون تگ نمایش میده.
و خط اخر هم که برای قرار دادن مقدار عملیات در تابع به کار میره (اینم بگم تابه attributes از نوع آرایه اس)
نحوه استفاده از تابع
لینک ها تنها برای اعضای سایت قابل نمایش است.
آدرس بالا رو باز کنید.
کد:
omdb('نام خصوصیت');
کد:
omdb('director');
به همین سادگی ! تموم شد حالا تابع رو هرجایی که خواستید با پارامتر دلخواهتون صدا بزنید که اطلاعات مورد نظر رو برگردونه.
پروژه ای هم که این کار رو روش انجام دادم
لینک ها تنها برای اعضای سایت قابل نمایش است.
ئهکد کامل آموزش
کد:
function omdb($action){
$ptitle=get_field( "postname" );
$ptitle =str_replace(" ", '%20',$ptitle);
$pyear=get_field( "year" );
$url=file_get_contents("http://www.omdbapi.com/?t=".$ptitle."&y=".$pyear."&r=XML");
$xml=simplexml_load_string($url);
$attr = $xml->movie[0]->attributes();
return $attr[$action];}
آخرین ویرایش توسط مدیر: