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

meta

سلام دوستان؛

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

انشعابات گسترش افزونه

لازم میدونم قبل از اینکه راجع به گسترش افزونه ی مورد نظر که با نام single-post-meta-manager هست، وارد بحث بشیم بیایم یه توضیحی بدیم که اصلا چرا میخوایم که متا داده های ما نمایش داده بشن و این کار چه ضرورتی داره ؟!
زمانی که شما گونه هایی از اطلاعات رو دارید، امر بسیار مهم اینه که چگونگی ساخت محصولات و نوشته ها و مدیریت اونها رو در نظر بگیرید.

نگاهی به داده ها

متا داده ها در ارتباط با یک نوشته در پایگاه داده ذخیره میشن، حال برخی به وسیله ی وردپرس، برخی به وسیله ی قالب ها و برخی به وسیله ی افزونه ها که تمامی اینها اطلاعات مورد نیاز و خاصی هستش.
به تصویر زیر نگاه کنید! متوجه میشید که در ردیف ها یک سری لسامی با کلیدهای پیشوندی و زیر خط وجود داره. برای مثال _edit_lock  و  _edit_last یا ارزش های دیگه!

ax-1

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

حال در این بین مشکل کجاست ؟

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

گسترش در مدیریت متا داده ها

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

۱- در اینجا ما از تم پایه ی Twenty fourteen استفاده می کنیم.
۲- یک فهرست عمومی رو تهیه می کنیم که برای نمایش اطلاعات در بخش public و نوشته های یکتا نمایش داده بشه.

معرفی فهرست عمومی

فرض کنید در حال حاضر قالب twenty fourteen رو فعال کردید و افزونه رو نصب کردید. قابلیت های معرفی شده ی افزونه به این صورت است :
معرفی فهرست عمومی
افزودن کلاس single_post_Meta_manager_publics
کلاس در فایل اصلی افزونه
پس از افزودن فایل ها، موارد فوق رو توسط کدهای زیر در load_dependencies  به صورت عملکردی در includes/single-post-meta-manager.php ایجاد کنید.

private function load_dependencies() {

    require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-single-post-meta-manager-admin.php';
    require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-single-post-meta-manager-public.php';

    require_once plugin_dir_path( __FILE__ ) . 'class-single-post-meta-manager-loader.php';
    $this->loader = new Single_Post_Meta_Manager_Loader();

}

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

<?php
/**
 * The Single Post Meta Manager Public defines all functionality for the public-facing
 * sides of the plugin
 *
 * @package SPMM
 */

/**
 * The Single Post Meta Manager Public defines all functionality for the public-facing
 * sides of the plugin.
 *
 * This class defines the meta box used to display the post meta data and registers
 * the style sheet responsible for styling the content of the meta box.
 *
 * @since    1.0.0
 */
class Single_Post_Meta_Manager_Public {

    /**
     * A reference to the version of the plugin that is passed to this class from the caller.
     *
     * @access private
     * @var    string    $version    The current version of the plugin.
     */
    private $version;

    /**
     * Initializes this class and stores the current version of this plugin.
     *
     * @param    string    $version    The current version of this plugin.
     */
    public function __construct( $version ) {
        $this->version = $version;
    }

    /**
     * Uses the partial located in the admin directory for rendering the
     * post meta data the end of the post content.
     *
     * @param    string    $content    The post content.
     * @return   string    $content    The post content including the given posts meta data.
     */
    public function display_post_meta_data( $content ) {

        ob_start();

        require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/single-post-meta-manager.php';
        $template = ob_get_contents();
        $content .= $template;

        ob_end_clean();

        return $content;

    }

}

سپس احتیاج به ایجاد عملکرد define_public_hooks می باشد:

<?php
/**
 * Defines the hooks and callback functions that are used for rendering information on the front
 * end of the site.
 *
 * This function relies on the Single Post Meta Manager Public class and the Single Post Meta Manager
 * Loader class property.
 *
 * @access    private
 */
private function define_public_hooks() {

    $public = new Single_Post_Meta_Manager_Public( $this->get_version() );
    $this->loader->add_action( 'the_content', $public, 'display_post_meta_data' );

}

بعد از آن، نیاز به فراخوانی عملکرد سازنده ای است. طبق خط بالا $this->define_admin_hooks(); با افزودن $this->define_public_hooks(); فراخوانی صورت می گیرد. 

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

ax-2

 

شاد باشید

آیا این مقاله برای شما مفید بود؟
تقریبا
خیر

اگر می‌خواهید از آخرین و محبوب‌ترین مقالات ما در ایمیل خود مطلع شوید، همین الان ایمیل خود را در کادر زیر وارد کنید:

تعداد علاقه‌مندانی که تاکنون عضو خبرنامه ما شده‌اند:

400,351 نفر

دیدگاهتان را بنویسید

ارسال دیدگاه به معنی این است که شما ابتدا قوانین ارسال دیدگاه را مطالعه کرده‌اید و با آن موافق هستید.

دیدگاه‌های این نوشته جدید ترین ها شاخص

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

    • 8 سال عضو همیار وردپرس

      سلام
      پیگیری میکنم

  2. سلام ، هر کار کردم ک ایمیل ارسال نشد ! مشکلم اینه ک فایل ها ضمینه موجود در پکیج طراحی وب اسمشون مشخص نیست ! در عکس مشاهده کنید : http://up.vbiran.ir/uploads/3844614069658952507_556363.png

    • 8 سال عضو همیار وردپرس

      سلام
      کامپیوتر شما تنظیمات utf-8 اوکی هست ؟

    • سلام،اره اوکی ! فقط این فایلاش اینجوریه !

    • 8 سال عضو همیار وردپرس

      سلام
      خودتون می تونید به حالت درست rename کنید ؟

    • سلامی دوباره :)اگه منظور تغیر نام فایل هاست اره میتونم تغیر بدم ! ولی اسمشون بلد نیستم ک بتونم تغیر بدم 🙂

    • 8 سال عضو همیار وردپرس

      سلام
      الان دقیقا میخواید چیکار کنید ؟

  3. سلام،
    من یکسری متا باکس دارم که نمیخوام در یک دسته خاص مثلا دسته خبر این متا باکسها نمایش داده بشند چکار باید بکنم؟

    ممنون.

    • 8 سال عضو همیار وردپرس

      سلام
      از تنظیمات بالای صفحه می تونید متا باکس هاتون رو مشخص کنید

    • ظاهرا من بد سوال کردم!
      من یکسری متا باکس تعریف شده دارم که بصورت ثابت در تمامی پستها نمایش داده میشن حتی اگر value براشون انتخاب نکنم.
      حالا میخوام این متاها رو جلوی نمایششون از یک category خاص مثلا category “خبر” بگیرم 0نمیخوام توی پستهایی که با دسته بندی خبر منتشر میشن این متاها نمایش داده بشن).
      چکار باید بکنم؟

    • 8 سال عضو همیار وردپرس

      سلام
      من باز هم متوجه اصلی منظور شما نشدم ! ولی فکر میکنم اگه در دسته بندی ها نام رو متفاوت کنید قضیه حل بشه

دوره‌های آموزشی