بروزرسانی خودکار منوهای وردپرس

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 22 بهمن 1396
دسته بندی ها : وردپرس

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

در هر حال به عنوان یک توسعه دهنده ممکن است برای یک فرد وبسایتی را ساخته باشید و آن فرد به وبسایت برگه هایی را اضافه کند. در این حالت ممکن است مشتری شما با اضافه کردن و تغییر دادن فهرست وبسایت مشکلاتی داشته باشد. خب شما به عنوان توسعه دهنده باید کاری کنید که این مشکل حل شود.

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

پیش نیازها

برای خودکار سازی فهرست های وردپرس شما نیازمند مواردی هستید که در زیر آورده شده است:

  • یک وردپرس نصب شده که در آن برگه هایی قرار دارد.
  • چند زیر برگه
  • یک کد ادیتور

شروع کار با کدها

من می خواهم کدهای مورد نظرم را در یک افزونه قرار دهم، در چنین حالتی من قادر خواهم بود که از کدها برای ایجاد تغییرات در پوسته استفاده کنم. این ویژگی به من امکان راحتی برای قرار دادن کد در افزونه و استفاده از آن در پوسته را می دهد. با این کار می توانم منوها درست در همان جایی که می‌خوام نمایش دهم. اگر پوسته شما از hook ها پشتیبانی می کند پس شما می توانید از آن ها نیز برای کدنویسی استفاده کنید.

برای آن پوسته هایی نیز که از hook ها استفاده نمی کنند تنها راه چاره قرار دادن کدها به صورت مستقیم درون خود افزونه است. در چنین حالتی به نظر می آید که بهترین کار اضافه کردن یک پوسته فرزند به پوسته اصلی‌تان و قرار دادن کدها در آن است.

قدم اول من برای این مرحله ساختن یک افزونه است. یک پوشه را در دایرکتوری مربوط به افزونه ها ایجاد کنید. این کار به ما اجازه می دهد تا کدها و فایل های بیشتری را در آینده به افزونه‌مان اضافه کنیم. خب حال باید یک فایل ایجاد کنیم و دستورهای اولیه افزونه را در آن قرار دهیم. این دستورات به صورت کامنت هستند و به وردپرس کمک می کنند تا متوجه شود که این فایل مربوط به چیست.

/**
 * Plugin Name: Automating Navigation Menus
 * Description: Plugin to Automate Updating Menus
 * Version: 1.
 * Author: Jackson
 * Author URI: http://boochyonlinepesa.co.ke
 */

فعال کردن افزونه

قدم بعدی فعال کردن افزونه است. در این آموزش من از پوسته فرزند Twenty Seventeen استفاده می کنم. پس نحوه آدرس دادن به فایل سی‌اس‌اس مربوط به وبسایت من به صورت زیر خواهد بود:

/**
 * Plugin Name: Automating Navigation Menus
 * Description: Plugin to Automate Updating Menus
 * Version: 1.
 * Author: Jackson
 * Author URI: http://boochyonlinepesa.co.ke
 Template: twentyseventeen
 Version: 1
*/
@import url("../twentyseventeen/style.css");
 */

خب حال می خواهیم یکسری کد را بنویسیم. اولین کاری که انجام می‌دهیم نوشتن یک تابع است که با استفاده از آن برگه ها به صورت سلسله مراتب  لیست می شوند. در این کد از wp_list_pages() برای لیست کردن تمام برگه ها همراه با لینک‌شان استفاده کرده‌ایم. خب با این کار ما ملزم می شویم که یک آرگومان را تعریف کنیم:

wpmap_list_pages() {
 $args = array(
 'depth' => 3
 );
}

قرار دادن depth برابر با ۳ به این معناست که حداقل لینک هایی که می شود وارد کرد باید دو مورد باشد. حال درست زیر تعریف تابع آن را با آرگومان خود فراخوانی می‌کنیم.

wpmap_list_pages() {
 $args = array(
 'depth' => 2
 );
 wp_list_pages( $args );
}

کار کردن تابع همراه با پوسته

تا به این لحظه تابع ایجاد شده در هیچ جای پوسته نمایش داده نمی شود و کار نمی کند. برای این کار باید header مربوط به قالب اصلی را کپی کرده و در پوسته فرزند قرار دهیم. در پوسته‌ای که من استفاده می‌کنم باید فایل navigation-top.php را از قالب اصلی کپی کرده و در پوسته فرزند قرار دهم.  در پوسته ای که من استفاده می کنم، کدهایی که نیاز دارند تغییر کنند مانند کدهای زیر است:

wp_nav_menu( array(
 'theme_location' => 'top',
 'menu_id' => 'top-menu',
 ) );

حال کد بالا را در یک شرط قرار می دهیم:

 if ( function_exists( 'wpmap_list_pages' ) ) {
 wpmap_list_pages();
 }
 else {
 wp_nav_menu( array(
 'theme_location' => 'top',
 'menu_id' => 'top-menu',
 ) );
 }

حال باید برگه ها را از قسمت بالا حذف کنم و به صورت بهتری آن ها را مرتب کنم. برای این کار به قسمتی که تابع را ایجاد کردیم و آرگومان را تنظیم نمودیم برگردم. آرگومان را به صورت زیر تغییر می‌دهم:

$args = array(
 'depth' => 3,
 'title_li' => '<h4>' . __( 'Menu', 'wpmap' ) . '</h4>',
 'sort_column' => 'menu-order'
);

برای هرکدام از برگه ها باید مقدار page order را تنظیم کنیم. به صورت کلی برای صفحه اصلی باید مقدار صفر و برای برگه های دیگر مقادیر بالاتر را وارد کرد.

در پایان

اگر وبسایت وردپرسی دارید که مبتنی بر برگه هاست. این مورد بهترین تکنیک برای اضافه کردن آن ها به صورت خودکار به وبسایت است. این تکنیک برای فریلنسرهایی که وبسایت مشتریانی را طراحی می کنند که برگه های زیادی را اضافه می کند بسیار مناسب است. تنها کاری که باید بکنید این است که به مشتریان‌تان بگویید که چگونه  page order را تنظیم کنند.

منبع

مقالات پیشنهادی

چگونه عکس های وردپرس را ریسپانسیو کنیم

ورد پرس يك پلت فرم فوق العاده قوي ايست. ساخت یک تم ریسپانسیو و یکپارچه وقتی که اصول اولیه قالب سازی را می­دانید واقعا آسان است. عکس های ریسپانسیو چیزی...

قرار دادن تایید هویت دو مرحله ای در وردپرس

با افزایش خطرات مربوط به وبسایت و بالا رفتن اهمیت موضوع امنیت در وبسایت، توسعه دهنده ها باید همواره متوجه موضوعات امنیتی باشند. مخصوصا اگر فردی از پلت...

۱۰ منبع رایگان برای توسعه خارق العاده پوسته های وردپرس

ساختن پوسته شخصی خودتان راه بسیار مناسبی برای کشف چگونگی کار کردن محبوب ترین سیستم مدیریت محتوای جهان است. همچنین، این کار باعث می شود که شما هر چیزی...

۵ افزونه برای ساخت صفحات وردپرس

افرادی که با وردپرس آشنایی ندارند و در این زمینه مبتدی هستند معمولا بدون چند تغییر ساده در متن‌ها نمی توانند شخصی سازی بیشتری را انجام دهند، این مورد...