رفتن به مطلب

فردین

عضو سایت
  • تعداد ارسال‌ها

    121
  • تاریخ عضویت

  • آخرین بازدید

نوشته‌ها ارسال شده توسط فردین

  1. سلام دوستان 

    من از پلیر 
    https://github.com/sampotts/plyr

    استفاده میکنم و داخل قالب فایلاشو کپی کردمو ... و اوکی شده و اجرا میشه

    و به خوبی کار میکنه 

    اما مشکلی که دارم فقط رو یه قسمت این بخش میاد

    مثلا توی این لینک

    https://musicfm.ir/movie/charlies-angels-2019/

    یه بخش دوبله فارسی هست یه بخش بدون هاردساب

    هر کودوم اول هست پلیر روی اون اجرا میشه و بقیه قسمت هایه پایینش پلیر دیفالت خوده وردپرس هست

    تنها مشکلی که من دارم اینه که این پلیر فقط روی فیلد اولیه ی میفته 

    امکانش هست روی همه ی کادر ها پلیر اولیه بیفتهو ایا امکانش هست بشه روی خوده ویدئو پلیر وردپرس امکان تغییر کیفیت یا زیرنویس ایجاد کرد

    ممنون

  2. در 6 ساعت قبل، SM-Mahdavi گفته است :

    شما باید از کوئری صفحه بندی شده استفاده کنید.

    نمونه ش رو براتون میزارم

    
    <?php
    					$custom_query = new WP_Query( array(
    							'posts_per_page' => 10
    							'post_type' => 'post'
    							'paged' => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1,
    						)
    					);
    					if($custom_query->have_posts()){
    						while($custom_query->have_posts()) {
    							$custom_query->the_post(); ?>
    						<div class="item-article col-lg-6 col-md-6 col-sm-6 col-xs-12">
    							<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    							<h3><?php the_excerpt(); ?></h3>
    							<h6><a href="<?php the_permalink(); ?>" class="read-more">ادامه مطلب</a></h6>
    						</div>
    						<?php
    						}
    					}else{ ?>
    						<div class="col-md-3 features-grid">
    							<h3>بدون محصول</h3>
    							<p>محصولی جهت نمایش موجود نیست</p>
    						</div>
    					<?php
    					} wp_reset_postdata();	
    					echo '<div id="paginate">';
    						$big = 999999999; // need an unlikely integer
    						echo paginate_links(
    							array(
    								'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    								'format' => '?paged=%#%',
    								'current' => max( 1, get_query_var('paged') ),
    								'total' => $custom_query->max_num_pages
    							);
    					);
    					echo "</div>";
    					?>

     

    ممنون این کد رو اضافه کردم درست شد

    							'paged' => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1,
    						)
    					);
    
  3. این کدهای صفحه ی اصلیم هست با استفاده از کد بالا

     

     
    <?php get_header();?>
    <div class="continer-all">
    <div class="width">
    <div class="main">
    <?php
    if(is_home()){
    get_template_part( 'inc/part/post-type-resent' );
    }
    if (function_exists('filmbin_breadcrumbs')) filmbin_breadcrumbs();
    ?>
    <div class="centeral">
    <?php
    if(is_home()){
    if(ds_option('active_weekly_table') == 'on') {
    get_template_part( 'inc/part/jadval-pakhsh' );
    }}
    ?>
    <?php
    if(ds_option('fixed_posts') == 'on') {
    get_template_part( 'inc/part/buy-top' );
    }
    if(ds_option('fixed_posts2') == 'on') {
    get_template_part( 'inc/part/buy-top-2' );
    }
    		$sevenhost_updated_type = new WP_Query( array(
    		'post_type' 		=> array( 'post', 'series'),
    		'posts_per_page' 	=> 10,
    		'orderby'        	=> 'modified', 
    	));
    	if ( $sevenhost_updated_type->have_posts() ) :
    		while( $sevenhost_updated_type->have_posts() ) :
    			$sevenhost_updated_type->the_post();
    get_template_part( 'inc/part/loop-index' );
    			endwhile; 
    			wp_reset_postdata();
    			endif; 
    if(ds_option('fixed_posts3') == 'on') {
    get_template_part( 'inc/part/buy-bottom' );
    }
    if(ds_option('fixed_posts4') == 'on') {
    get_template_part( 'inc/part/buy-bottom-2' );
    }
    if (function_exists('wp_corenavi')) wp_corenavi();
    ?>
    </div>
    <?php get_sidebar(); ?>
    </div>
    </div>
    <?php get_footer();?>
     
  4. در 18 ساعت قبل، SM-Mahdavi گفته است :

    سلام

    
    <?php query_posts('post_type=any&orderby=modified&order=desc'); ?>

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

    <?php
    $sevenhost_updated_type = new WP_Query( array(
    'post_type' 		=> array( 'post', 'series'), 	
    'posts_per_page' 	=> 10, 				
    'orderby'        	=> 'modified', 			
    ));
    if ( $sevenhost_updated_type->have_posts() ) :
    while( $sevenhost_updated_type->have_posts() ) :
    $sevenhost_updated_type->the_post();
    ?>
    <?php 
    endwhile; 
    wp_reset_postdata();
    endif; 
    ?>

    اگر ممکن هست این مشکلم رفع بشه ممنون میشم

  5. در 17 ساعت قبل، SM-Mahdavi گفته است :

    سلام

    
    <?php query_posts('post_type=any&orderby=modified&order=desc'); ?>

    این مورد رو تست کردم فقط پست تایپ رو نشون میده من یه بخش پست تایپ به اسم series دارم و post های خوده وردپرس هر دوش رو نمیتونم تو این کد داشته باشم وقتی جفتشون رو به این صورت میزنم کلا هیچی نمیاره

    query_posts($query_string .'&post_type=series,post&orderby=modified&order=desc');
    
     
  6. سلام دوستان من دنبال کدی بودم که وقتی پستی رو بروز میکنم بدون دست زدن به تاریخ انتشارش صفحه ی اصلی نمایش داده بشه که به این کد رسیدم

    <?php query_posts($query_string . '&orderby=modified&order=desc'); ?>
    

    و به درستی هم عمل میکنه منتها فقط نوشته های خوده وردپرس رو نشون میده مثلا قالب من که پست تایپی به اسم series داره رو نشون نمیده چی باید بهش اضافه بشه تا پست تایپ هم نشون بده 

    ممنون

  7. در 43 دقیقه قبل، Parsa گفته است :

    کد رو تست نکردم، ولی خب احتمالا باید جواب بده

     

    
    function abl_mc_auto_image_attributes( $post_ID ) {
      $attachment = get_post( $post_ID );
      
      $attachment_title = get_the_title($attachment->post_parent);
      
      $uploaded_image = array();
      $uploaded_image['ID'] = $post_ID;
      $uploaded_image['post_title'] = $attachment_title; // Image Title
      $uploaded_image['post_excerpt'] = $attachment_title; // Image Caption
      $uploaded_image['post_content'] = $attachment_title; // Image Description
      
      wp_update_post( $uploaded_image );
      update_post_meta( $post_ID, '_wp_attachment_image_alt', $attachment_title ); // Image Alt Text
    }
    add_action( 'add_attachment', 'abl_mc_auto_image_attributes' );

     

    ممنون استاد همین کد رو میخاستم عمل کرد ممنون

    یک سوال دیگه

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

    مثلا بخش توضیحات مختصر محتوای متن باشه و توضیحات برچسب ها یا زمینه ی دلخواه و .. 

  8. در 19 ساعت قبل، SM-Mahdavi گفته است :

    سلام

    با افزونه زیر می تونید انجام بدید

    https://wordpress.org/plugins/bulk-image-alt-text-with-yoast/

    اکثر افزونه ها مشکل دار هستند و نمیشه 

    من چند تا کد پیدا کردم از سایت هایه خارجی منتها این ها اسمه خوده عکس رو قرار میدن برای مشخصات

    چطور میشه تایتل پست رو قرار داد

    /**
     * Auto Add Image Attributes From Image Filename 
     *
     * @author Arun Basil Lal
     * @refer https://millionclues.com/?p=3908
     * @plugin https://wordpress.org/plugins/auto-image-attributes-from-filename-with-bulk-updater/
     */
    function abl_mc_auto_image_attributes( $post_ID ) {
      $attachment = get_post( $post_ID );
      
      $attachment_title = $attachment->post_title;
      $attachment_title = str_replace( '-', ' ', $attachment_title ); // Hyphen Removal
      $attachment_title = ucwords( $attachment_title ); // Capitalize First Word
      
      $uploaded_image = array();
      $uploaded_image['ID'] = $post_ID;
      $uploaded_image['post_title'] = $attachment_title; // Image Title
      $uploaded_image['post_excerpt'] = $attachment_title; // Image Caption
      $uploaded_image['post_content'] = $attachment_title; // Image Description
      
      wp_update_post( $uploaded_image );
      update_post_meta( $post_ID, '_wp_attachment_image_alt', $attachment_title ); // Image Alt Text
    }
    add_action( 'add_attachment', 'abl_mc_auto_image_attributes' );

    https://millionclues.com/wordpress-tips/automatically-add-image-caption-description-and-alt-text-from-image-title/?unapproved=704336&moderation-hash=15ce91a4f0b2813f5f973b9fe359eb76&et_monarch_popup=true

     

    add_action('added_post_meta', 'wpse_20151219_after_post_meta', 10, 4);
    
    function wpse_20151219_after_post_meta($meta_id, $post_id, $meta_key, $meta_value) {
    
        // _wp_attachment_metadata added
        if($meta_key === '_wp_attachment_metadata') {
    
            // ----------------------------------------------------------------------
            // POST
            // ----------------------------------------------------------------------
    
            // Change basic fields on attachment post
            wp_update_post(array(
                               'ID'           => $post_id,
                               'post_title'   => "This is a TITLE for $post_id",
                               'post_content' => "This is the DESCRIPTION for $post_id",
                               'post_excerpt' => "This is the CAPTION for $post_id",
                           ));
    
            // ----------------------------------------------------------------------
            // POST META
            // ----------------------------------------------------------------------
    
            // Change ALT Text
            update_post_meta($post_id, '_wp_attachment_image_alt', "This is the ALT Text for $post_id");
    
            // Add Custom Field
            update_post_meta($post_id, '_wpse_20121219_my_custom_meta', 'MyCustomMetaValue');
    
            // ----------------------------------------------------------------------
            // POST META ( ATTACHMENT METADATA )
            // ----------------------------------------------------------------------
    
            // Change Image Metadata
            $meta_value[ 'image_meta' ] = array_merge($meta_value[ 'image_meta' ], array(
                'credit'    => 'https://black-buddha.com',
                'camera'    => 'The Best Camera EVER!',
                'copyright' => date('Y'),
                'title'     => "This is a META TITLE for $post_id",
                'caption'   => "This is a META CAPTION for $post_id",
            ));
    
            // Update The Image Metadata
            wp_update_attachment_metadata($post_id, $meta_value);
    
            // _wp_attached_file
            // _wp_attachment_metadata (serialized)
            // _wp_attachment_image_alt
            // _wpse_20121219_my_custom_meta
    
            $attachment_meta = get_post_meta($post_id);
    
            // width
            // height
            // file
            // sizes
            // image_meta
            //      aperture
            //      credit
            //      camera
            //      caption
            //      created_timestamp
            //      copyright
            //      focal_length
            //      iso
            //      shutter_speed
            //      title
            //      orientation
            //      title
            //      keywords
    
            $attachment_metadata = wp_get_attachment_metadata($post_id);
        }
    }

    https://wordpress.stackexchange.com/questions/125805/auto-add-image-title-caption-alt-text-description-while-uploading-images-in-word

     

    /* Automatically set the image Title, Alt-Text, Caption & Description upon upload
    -----------------------------------------------------------------------*/
    
    add_action( 'add_attachment', 'my_set_image_meta_upon_image_upload' );
    
    function my_set_image_meta_upon_image_upload( $post_ID ) {
    // Check if uploaded file is an image, else do nothing
    if ( wp_attachment_is_image( $post_ID ) ) {
    $my_image_title = get_post( $post_ID )->post_title;
    // Sanitize the title: remove hyphens, underscores & extra
    // spaces:
    $my_image_title = preg_replace( '%\s*[-_\s]+\s*%', ' ',
    $my_image_title );
    // Sanitize the title: capitalize first letter of every word
    // (other letters lower case):
    $my_image_title = ucwords( strtolower( $my_image_title ) );
    // Create an array with the image meta (Title, Caption,
    // Description) to be updated
    // Note: comment out the Excerpt/Caption or Content/Description
    // lines if not needed
    $my_image_meta = array(
    // Specify the image (ID) to be updated
    'ID' => $post_ID,
    // Set image Title to sanitized title
    'post_title' => $my_image_title,
    // Set image Caption (Excerpt) to sanitized title
    'post_excerpt' => $my_image_title,
    // Set image Description (Content) to sanitized title
    'post_content' => $my_image_title,
    );
    
    // Set the image Alt-Text
    update_post_meta( $post_ID, '_wp_attachment_image_alt',
    $my_image_title );
    // Set the image meta (e.g. Title, Excerpt, Content)
    wp_update_post( $my_image_meta );
    }
    }

    https://wpkraken.io/blog/wordpress-images/

    add_action('add_attachment', 'ehi_auto_populate_image_fields');
    function ehi_auto_populate_image_fields($postID)
    {
        if (wp_attachment_is_image($postID))
        {
            // Grab the Title auto-generated by WordPress
            $ehi_image_title = get_post($postID)->post_title;
     
            // Remove hyphens, underscores, and extra spaces
            $ehi_image_title = preg_replace('%\s*[-_\s]+\s*%', ' ',  $ehi_image_title);
     
            // Capitalize first letter of every word
            $ehi_image_title = ucwords(strtolower($ehi_image_title));
             
            $ehi_image_meta = array(
                'ID'        => $postID,
                'post_title'    => $ehi_image_title, // Image Title
                'post_excerpt'  => $ehi_image_title, // Image Caption (Excerpt)
                'post_content'  => $ehi_image_title, // Image Description (Content)
            );
     
            // Update the Alt Text
            update_post_meta($postID, '_wp_attachment_image_alt', $ehi_image_title);
     
            // Update the other fields
            wp_update_post($ehi_image_meta);
        } 
    }

    https://ehikioya.com/auto-populate-wordpress-image-alt-text/

    اینها بودند بقیه سایتا هم همین کدارو گذاشتن چه تغییر باید داده بشه تو کد ها که پست تایتل تو فیلد ها نوشته بشه نه نام عکس 

    ممنون 

  9. در 17 ساعت قبل، SM-Mahdavi گفته است :

    سلام

    با افزونه زیر می تونید انجام بدید

    https://wordpress.org/plugins/bulk-image-alt-text-with-yoast/

    این افزونه رو تست کردم متاسفانه کار نمیکنه اصلا

    این تنظیمات افزونه

    Screenshot (249).png

  10. سلام کد یا افزونه ای هست که به صورت خودکار آلت و توضیحات عکس رو با استفاده از تایتل پست پر کنه 

    این قسمت ها منظورم هست داخل عکس کادر کشیدم

    بیشتر بخش متن جایگزین اولویت داره چون برای افزونه یواست سئو مهمه 

    ممنون

    Screenshot (245).png

     0
  11. سلام کد یا افزونه ای هست که به صورت خودکار الت و توضیحات عکس رو با استفاده از تایتل پست پر کنه 

    این قسمت ها منظورم هست داخل عکس کادر کشیدم

    بیشتر بخش متن جایگزین اولویت داره چون برای افزونه یواست سئو مهمه 

    ممنون

    Screenshot (245).png

  12. در در 1/3/2020 at 01:12، Morteza گفته است :

    سلام

    ربطی به سرور و دامنه نداره.

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

    جدیدا اینطور شده اروری نیست اصلا

    الان چند تا سایت دیگه هم درگیره این مشکل شدن به عکس زیر نگاه کنید

    من تیک پست هارو تو تنظیمات سایت مپ زدم و تو لینک که باز میکنم نشون میده اما تو وبمستر هیچی نمیاره 

    جالبتر از اون اینه که رو دامنه اصلی این مشکل هست ساب دامین و ساب فولدر که میسازم و افزونه رو نصب میکنم سایت مپ درسته 

    Screenshot (209).png

  13. سلام خدمت دوستان 

    جدیدا وقتی این افزونه رو نصب میکنم همه ی بخش ها ایندکس میشه تو وبمستر به جز پست ها 

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

    دوستان به نظرتون مشکل از چی هست ایا دامنه ir تحریم شده توسط گوگل

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

    ممنون اگر کسی بتونه راهنماییم کنه

    Screenshot (69).png

  14. سلام دوستان خسته نباشید ببخشید چطور میتونم مثل این لینک کش کنم سایتمو
     

    https://rozmusic.com/%d8%b9%d9%84%db%8c%d8%b1%d8%b6%d8%a7-%d9%be%d9%88%db%8c%d8%a7-%d8%b9%d9%84%d8%a7%d9%82%d9%87.html


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

  15. در در 6/26/2019 at 11:51، Mohammad Bazli گفته است :

    درود

    اگه تو بعضی از ساعات افت سرعت داری مبیشه گفت که از هاست هستش که اونم 2 دلیل داره و اولی اینه که چون بازیدید سایت خودت تو یه ساعت مشخصی میره بالا به سرور اشتراکی که خریدی و همه دارن ازش استفاده میکنن فشار میاد و کند میشه و دلیل دومش اینه که سایت دیگه ای بزدیدش میره بالا و چون شما هم تو همون سرور هستی رو سایت شما هم تاثیر میذاره و کند میشه.

    در ضمن فیلتر شدی!

    و اینکه ssl هم تنظیم کنی رو سایتت بد نیست.

     

  16. سلام دوستان کسی میتونه راهنمایی کنه منو تو یک سری ساعت به خصوص سایت خیلی خیلی کند میشه 

    اما 9 شب به بعد سرعتش درست میشه 

    از هاستینگ هست یا سایت من مشکل داره

    هاستینگ میگه مصرف منابعی نداری که کند باشه نمیدونم چیکار کنم

    از قالب و افزنه ها هم نیست چون تست کردیم

    ادرس سایت 

    http://musicfm.ir

  17. سلام خسته نباشید
    دوستان کسی میتونه کمک کنه این دو گزینه رو حل کنم
    بخش [Leverage browser caching] فایلم که از هاست دانلودم قرار داده شده رو کش نمیکنه
    و حجم زیادی به صفحه اضافه میکنه و همچنین زمان لود رو افزایش میده
    من از افزونه ی راکت هم استفاده میکنم
    کسی میتونه کمکم کنه
    ممنون

     

    Screenshot (18).png

    Screenshot (19).png

  18. سلام خدمت دوستان
    سایت من قبلا روی یواست بود برای تست مدتی رفتم روی ال این وان و حالا که برگشتم دوباره رو یوئست به این مشکل برخوردم
    که عبارت کلیدی کانونی نمایش داده نمیشه داخل پست


    توی نوار پیشخوان هم هیچی نمیاد
    دلیلش چی میتونه باشه تمام افزونه هارو غیرفعال کردم حتی قالب هم عوض کردم درست نشد
    من از کلود فلر هم استفاده میکنم

     

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

    • امتیاز 1
  20. در 12 ساعت قبل، mehran-b گفته است :

    بله متوجه شدم افزونه رو با قالب ترکیب کردن.

    بله اینم متوجه شدم.

    اینم که مورد سوال شماست ولی هر قالبی ساختار فایلیش با قالب های دیگه فرق داره و من نمیدونم ساختار این قالب به چه شکله.

    اینم یه فایلی آموزشی کار با CMB2 باید باشه.

     

    پ.ن : پشت سر هم پاسخ ندید و منتظر پاسخ بمونید.

    راه حلی نداره به نظرتون ؟

  21. <?php
    /**
     * Include and setup custom metaboxes and fields. (make sure you copy this file to outside the CMB2 directory)
     *
     * Be sure to replace all instances of 'yourprefix_' with your project's prefix.
     * http://nacin.com/2010/05/11/in-wordpress-prefix-everything/
     *
     * @category YourThemeOrPlugin
     * @package  Demo_CMB2
     * @license  http://www.opensource.org/licenses/gpl-license.php GPL v2.0 (or later)
     * @link     https://github.com/CMB2/CMB2
     */
    
    /**
     * Get the bootstrap! If using the plugin from wordpress.org, REMOVE THIS!
     */
    
    if ( file_exists( dirname( __FILE__ ) . '/cmb2/init.php' ) ) {
        require_once dirname( __FILE__ ) . '/cmb2/init.php';
    } elseif ( file_exists( dirname( __FILE__ ) . '/CMB2/init.php' ) ) {
        require_once dirname( __FILE__ ) . '/CMB2/init.php';
    }
    
    /**
     * Conditionally displays a metabox when used as a callback in the 'show_on_cb' cmb2_box parameter
     *
     * @param  CMB2 object $cmb CMB2 object.
     *
     * @return bool             True if metabox should show
     */
    function yourprefix_show_if_front_page( $cmb ) {
        // Don't show this metabox if it's not the front page template.
        if ( get_option( 'page_on_front' ) !== $cmb->object_id ) {
            return false;
        }
        return true;
    }
    
    /**
     * Conditionally displays a field when used as a callback in the 'show_on_cb' field parameter
     *
     * @param  CMB2_Field object $field Field object.
     *
     * @return bool                     True if metabox should show
     */
    function yourprefix_hide_if_no_cats( $field ) {
        // Don't show this field if not in the cats category.
        if ( ! has_tag( 'cats', $field->object_id ) ) {
            return false;
        }
        return true;
    }
    
    /**
     * Manually render a field.
     *
     * @param  array      $field_args Array of field arguments.
     * @param  CMB2_Field $field      The field object.
     */
    function yourprefix_render_row_cb( $field_args, $field ) {
        $classes     = $field->row_classes();
        $id          = $field->args( 'id' );
        $label       = $field->args( 'name' );
        $name        = $field->args( '_name' );
        $value       = $field->escaped_value();
        $description = $field->args( 'description' );
        ?>
        <div class="custom-field-row <?php echo esc_attr( $classes ); ?>">
            <p><label for="<?php echo esc_attr( $id ); ?>"><?php echo esc_html( $label ); ?></label></p>
            <p><input id="<?php echo esc_attr( $id ); ?>" type="text" name="<?php echo esc_attr( $name ); ?>" value="<?php echo $value; ?>"/></p>
            <p class="description"><?php echo esc_html( $description ); ?></p>
        </div>
        <?php
    }
    
    /**
     * Manually render a field column display.
     *
     * @param  array      $field_args Array of field arguments.
     * @param  CMB2_Field $field      The field object.
     */
    function yourprefix_display_text_small_column( $field_args, $field ) {
        ?>
        <div class="custom-column-display <?php echo esc_attr( $field->row_classes() ); ?>">
            <p><?php echo $field->escaped_value(); ?></p>
            <p class="description"><?php echo esc_html( $field->args( 'description' ) ); ?></p>
        </div>
        <?php
    }
    
    /**
     * Conditionally displays a message if the $post_id is 2
     *
     * @param  array             $field_args Array of field parameters.
     * @param  CMB2_Field object $field      Field object.
     */
    function yourprefix_before_row_if_2( $field_args, $field ) {
        if ( 2 == $field->object_id ) {
            echo '<p>Testing <b>"before_row"</b> parameter (on $post_id 2)</p>';
        } else {
            echo '<p>Testing <b>"before_row"</b> parameter (<b>NOT</b> on $post_id 2)</p>';
        }
    }
    
    add_action( 'cmb2_admin_init', 'yourprefix_register_demo_metabox' );
    /**
     * Hook in and add a demo metabox. Can only happen on the 'cmb2_admin_init' or 'cmb2_init' hook.
     */
    function yourprefix_register_demo_metabox() {
        $prefix = 'yourprefix_demo_';
    
        /**
         * Sample metabox to demonstrate each field type included
         */
        $cmb_demo = new_cmb2_box( array(
            'id'            => $prefix . 'metabox',
            'title'         => esc_html__( 'Test Metabox', 'cmb2' ),
            'object_types'  => array( 'page' ), // Post type
            // 'show_on_cb' => 'yourprefix_show_if_front_page', // function should return a bool value
            // 'context'    => 'normal',
            // 'priority'   => 'high',
            // 'show_names' => true, // Show field names on the left
            // 'cmb_styles' => false, // false to disable the CMB stylesheet
            // 'closed'     => true, // true to keep the metabox closed by default
            // 'classes'    => 'extra-class', // Extra cmb2-wrap classes
            // 'classes_cb' => 'yourprefix_add_some_classes', // Add classes through a callback.
        ) );
    
        $cmb_demo->add_field( array(
            'name'       => esc_html__( 'Test Text', 'cmb2' ),
            'desc'       => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'         => $prefix . 'text',
            'type'       => 'text',
            'show_on_cb' => 'yourprefix_hide_if_no_cats', // function should return a bool value
            // 'sanitization_cb' => 'my_custom_sanitization', // custom sanitization callback parameter
            // 'escape_cb'       => 'my_custom_escaping',  // custom escaping callback parameter
            // 'on_front'        => false, // Optionally designate a field to wp-admin only
            // 'repeatable'      => true,
            // 'column'          => true, // Display field value in the admin post-listing columns
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Text Small', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textsmall',
            'type' => 'text_small',
            // 'repeatable' => true,
            // 'column' => array(
            //     'name'     => esc_html__( 'Column Title', 'cmb2' ), // Set the admin column title
            //     'position' => 2, // Set as the second column.
            // );
            // 'display_cb' => 'yourprefix_display_text_small_column', // Output the display of the column values through a callback.
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Text Medium', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textmedium',
            'type' => 'text_medium',
        ) );
    
        $cmb_demo->add_field( array(
            'name'       => esc_html__( 'Read-only Disabled Field', 'cmb2' ),
            'desc'       => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'         => $prefix . 'readonly',
            'type'       => 'text_medium',
            'default'    => esc_attr__( 'Hey there, I\'m a read-only field', 'cmb2' ),
            'save_field' => false, // Disables the saving of this field.
            'attributes' => array(
                'disabled' => 'disabled',
                'readonly' => 'readonly',
            ),
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Custom Rendered Field', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'render_row_cb',
            'type' => 'text',
            'render_row_cb' => 'yourprefix_render_row_cb',
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Website URL', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'url',
            'type' => 'text_url',
            // 'protocols' => array('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet'), // Array of allowed protocols
            // 'repeatable' => true,
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Text Email', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'email',
            'type' => 'text_email',
            // 'repeatable' => true,
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Time', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'time',
            'type' => 'text_time',
            // 'time_format' => 'H:i', // Set to 24hr format
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Time zone', 'cmb2' ),
            'desc' => esc_html__( 'Time zone', 'cmb2' ),
            'id'   => $prefix . 'timezone',
            'type' => 'select_timezone',
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Date Picker', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textdate',
            'type' => 'text_date',
            // 'date_format' => 'Y-m-d',
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Date Picker (UNIX timestamp)', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textdate_timestamp',
            'type' => 'text_date_timestamp',
            // 'timezone_meta_key' => $prefix . 'timezone', // Optionally make this field honor the timezone selected in the select_timezone specified above
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Date/Time Picker Combo (UNIX timestamp)', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'datetime_timestamp',
            'type' => 'text_datetime_timestamp',
        ) );
    
        // This text_datetime_timestamp_timezone field type
        // is only compatible with PHP versions 5.3 or above.
        // Feel free to uncomment and use if your server meets the requirement
        // $cmb_demo->add_field( array(
        //     'name' => esc_html__( 'Test Date/Time Picker/Time zone Combo (serialized DateTime object)', 'cmb2' ),
        //     'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
        //     'id'   => $prefix . 'datetime_timestamp_timezone',
        //     'type' => 'text_datetime_timestamp_timezone',
        // ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Money', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textmoney',
            'type' => 'text_money',
            // 'before_field' => '£', // override '$' symbol if needed
            // 'repeatable' => true,
        ) );
    
        $cmb_demo->add_field( array(
            'name'    => esc_html__( 'Test Color Picker', 'cmb2' ),
            'desc'    => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'      => $prefix . 'colorpicker',
            'type'    => 'colorpicker',
            'default' => '#ffffff',
            // 'attributes' => array(
            //     'data-colorpicker' => json_encode( array(
            //         'palettes' => array( '#3dd0cc', '#ff834c', '#4fa2c0', '#0bc991', ),
            //     ) ),
            // ),
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Text Area', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textarea',
            'type' => 'textarea',
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Text Area Small', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textareasmall',
            'type' => 'textarea_small',
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Text Area for Code', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'textarea_code',
            'type' => 'textarea_code',
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Title Weeeee', 'cmb2' ),
            'desc' => esc_html__( 'This is a title description', 'cmb2' ),
            'id'   => $prefix . 'title',
            'type' => 'title',
        ) );
    
        $cmb_demo->add_field( array(
            'name'             => esc_html__( 'Test Select', 'cmb2' ),
            'desc'             => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'               => $prefix . 'select',
            'type'             => 'select',
            'show_option_none' => true,
            'options'          => array(
                'standard' => esc_html__( 'Option One', 'cmb2' ),
                'custom'   => esc_html__( 'Option Two', 'cmb2' ),
                'none'     => esc_html__( 'Option Three', 'cmb2' ),
            ),
        ) );
    
        $cmb_demo->add_field( array(
            'name'             => esc_html__( 'Test Radio inline', 'cmb2' ),
            'desc'             => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'               => $prefix . 'radio_inline',
            'type'             => 'radio_inline',
            'show_option_none' => 'No Selection',
            'options'          => array(
                'standard' => esc_html__( 'Option One', 'cmb2' ),
                'custom'   => esc_html__( 'Option Two', 'cmb2' ),
                'none'     => esc_html__( 'Option Three', 'cmb2' ),
            ),
        ) );
    
        $cmb_demo->add_field( array(
            'name'    => esc_html__( 'Test Radio', 'cmb2' ),
            'desc'    => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'      => $prefix . 'radio',
            'type'    => 'radio',
            'options' => array(
                'option1' => esc_html__( 'Option One', 'cmb2' ),
                'option2' => esc_html__( 'Option Two', 'cmb2' ),
                'option3' => esc_html__( 'Option Three', 'cmb2' ),
            ),
        ) );
    
        $cmb_demo->add_field( array(
            'name'     => esc_html__( 'Test Taxonomy Radio', 'cmb2' ),
            'desc'     => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'       => $prefix . 'text_taxonomy_radio',
            'type'     => 'taxonomy_radio',
            'taxonomy' => 'category', // Taxonomy Slug
            // 'inline'  => true, // Toggles display to inline
        ) );
    
        $cmb_demo->add_field( array(
            'name'     => esc_html__( 'Test Taxonomy Select', 'cmb2' ),
            'desc'     => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'       => $prefix . 'taxonomy_select',
            'type'     => 'taxonomy_select',
            'taxonomy' => 'category', // Taxonomy Slug
        ) );
    
        $cmb_demo->add_field( array(
            'name'     => esc_html__( 'Test Taxonomy Multi Checkbox', 'cmb2' ),
            'desc'     => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'       => $prefix . 'multitaxonomy',
            'type'     => 'taxonomy_multicheck',
            'taxonomy' => 'post_tag', // Taxonomy Slug
            // 'inline'  => true, // Toggles display to inline
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Checkbox', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'checkbox',
            'type' => 'checkbox',
        ) );
    
        $cmb_demo->add_field( array(
            'name'    => esc_html__( 'Test Multi Checkbox', 'cmb2' ),
            'desc'    => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'      => $prefix . 'multicheckbox',
            'type'    => 'multicheck',
            // 'multiple' => true, // Store values in individual rows
            'options' => array(
                'check1' => esc_html__( 'Check One', 'cmb2' ),
                'check2' => esc_html__( 'Check Two', 'cmb2' ),
                'check3' => esc_html__( 'Check Three', 'cmb2' ),
            ),
            // 'inline'  => true, // Toggles display to inline
        ) );
    
        $cmb_demo->add_field( array(
            'name'    => esc_html__( 'Test wysiwyg', 'cmb2' ),
            'desc'    => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'      => $prefix . 'wysiwyg',
            'type'    => 'wysiwyg',
            'options' => array(
                'textarea_rows' => 5,
            ),
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'Test Image', 'cmb2' ),
            'desc' => esc_html__( 'Upload an image or enter a URL.', 'cmb2' ),
            'id'   => $prefix . 'image',
            'type' => 'file',
        ) );
    
        $cmb_demo->add_field( array(
            'name'         => esc_html__( 'Multiple Files', 'cmb2' ),
            'desc'         => esc_html__( 'Upload or add multiple images/attachments.', 'cmb2' ),
            'id'           => $prefix . 'file_list',
            'type'         => 'file_list',
            'preview_size' => array( 100, 100 ), // Default: array( 50, 50 )
        ) );
    
        $cmb_demo->add_field( array(
            'name' => esc_html__( 'oEmbed', 'cmb2' ),
            'desc' => sprintf(
                /* translators: %s: link to codex.wordpress.org/Embeds */
                esc_html__( 'Enter a youtube, twitter, or instagram URL. Supports services listed at %s.', 'cmb2' ),
                '<a href="https://codex.wordpress.org/Embeds">codex.wordpress.org/Embeds</a>'
            ),
            'id'   => $prefix . 'embed',
            'type' => 'oembed',
        ) );
    
        $cmb_demo->add_field( array(
            'name'         => 'Testing Field Parameters',
            'id'           => $prefix . 'parameters',
            'type'         => 'text',
            'before_row'   => 'yourprefix_before_row_if_2', // callback.
            'before'       => '<p>Testing <b>"before"</b> parameter</p>',
            'before_field' => '<p>Testing <b>"before_field"</b> parameter</p>',
            'after_field'  => '<p>Testing <b>"after_field"</b> parameter</p>',
            'after'        => '<p>Testing <b>"after"</b> parameter</p>',
            'after_row'    => '<p>Testing <b>"after_row"</b> parameter</p>',
        ) );
    
    }
    
    add_action( 'cmb2_admin_init', 'yourprefix_register_about_page_metabox' );
    /**
     * Hook in and add a metabox that only appears on the 'About' page
     */
    function yourprefix_register_about_page_metabox() {
        $prefix = 'yourprefix_about_';
    
        /**
         * Metabox to be displayed on a single page ID
         */
        $cmb_about_page = new_cmb2_box( array(
            'id'           => $prefix . 'metabox',
            'title'        => esc_html__( 'About Page Metabox', 'cmb2' ),
            'object_types' => array( 'page' ), // Post type
            'context'      => 'normal',
            'priority'     => 'high',
            'show_names'   => true, // Show field names on the left
            'show_on'      => array(
                'id' => array( 2 ),
            ), // Specific post IDs to display this metabox
        ) );
    
        $cmb_about_page->add_field( array(
            'name' => esc_html__( 'Test Text', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'text',
            'type' => 'text',
        ) );
    
    }
    
    add_action( 'cmb2_admin_init', 'yourprefix_register_repeatable_group_field_metabox' );
    /**
     * Hook in and add a metabox to demonstrate repeatable grouped fields
     */
    function yourprefix_register_repeatable_group_field_metabox() {
        $prefix = 'yourprefix_group_';
    
        /**
         * Repeatable Field Groups
         */
        $cmb_group = new_cmb2_box( array(
            'id'           => $prefix . 'metabox',
            'title'        => esc_html__( 'Repeating Field Group', 'cmb2' ),
            'object_types' => array( 'page' ),
        ) );
    
        // $group_field_id is the field id string, so in this case: $prefix . 'demo'
        $group_field_id = $cmb_group->add_field( array(
            'id'          => $prefix . 'demo',
            'type'        => 'group',
            'description' => esc_html__( 'Generates reusable form entries', 'cmb2' ),
            'options'     => array(
                'group_title'   => esc_html__( 'Entry {#}', 'cmb2' ), // {#} gets replaced by row number
                'add_button'    => esc_html__( 'Add Another Entry', 'cmb2' ),
                'remove_button' => esc_html__( 'Remove Entry', 'cmb2' ),
                'sortable'      => true, // beta
                // 'closed'     => true, // true to have the groups closed by default
            ),
        ) );
    
        /**
         * Group fields works the same, except ids only need
         * to be unique to the group. Prefix is not needed.
         *
         * The parent field's id needs to be passed as the first argument.
         */
        $cmb_group->add_group_field( $group_field_id, array(
            'name'       => esc_html__( 'Entry Title', 'cmb2' ),
            'id'         => 'title',
            'type'       => 'text',
            // 'repeatable' => true, // Repeatable fields are supported w/in repeatable groups (for most types)
        ) );
    
        $cmb_group->add_group_field( $group_field_id, array(
            'name'        => esc_html__( 'Description', 'cmb2' ),
            'description' => esc_html__( 'Write a short description for this entry', 'cmb2' ),
            'id'          => 'description',
            'type'        => 'textarea_small',
        ) );
    
        $cmb_group->add_group_field( $group_field_id, array(
            'name' => esc_html__( 'Entry Image', 'cmb2' ),
            'id'   => 'image',
            'type' => 'file',
        ) );
    
        $cmb_group->add_group_field( $group_field_id, array(
            'name' => esc_html__( 'Image Caption', 'cmb2' ),
            'id'   => 'image_caption',
            'type' => 'text',
        ) );
    
    }
    
    add_action( 'cmb2_admin_init', 'yourprefix_register_user_profile_metabox' );
    /**
     * Hook in and add a metabox to add fields to the user profile pages
     */
    function yourprefix_register_user_profile_metabox() {
        $prefix = 'yourprefix_user_';
    
        /**
         * Metabox for the user profile screen
         */
        $cmb_user = new_cmb2_box( array(
            'id'               => $prefix . 'edit',
            'title'            => esc_html__( 'User Profile Metabox', 'cmb2' ), // Doesn't output for user boxes
            'object_types'     => array( 'user' ), // Tells CMB2 to use user_meta vs post_meta
            'show_names'       => true,
            'new_user_section' => 'add-new-user', // where form will show on new user page. 'add-existing-user' is only other valid option.
        ) );
    
        $cmb_user->add_field( array(
            'name'     => esc_html__( 'Extra Info', 'cmb2' ),
            'desc'     => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'       => $prefix . 'extra_info',
            'type'     => 'title',
            'on_front' => false,
        ) );
    
        $cmb_user->add_field( array(
            'name'    => esc_html__( 'Avatar', 'cmb2' ),
            'desc'    => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'      => $prefix . 'avatar',
            'type'    => 'file',
        ) );
    
        $cmb_user->add_field( array(
            'name' => esc_html__( 'Facebook URL', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'facebookurl',
            'type' => 'text_url',
        ) );
    
        $cmb_user->add_field( array(
            'name' => esc_html__( 'Twitter URL', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'twitterurl',
            'type' => 'text_url',
        ) );
    
        $cmb_user->add_field( array(
            'name' => esc_html__( 'Google+ URL', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'googleplusurl',
            'type' => 'text_url',
        ) );
    
        $cmb_user->add_field( array(
            'name' => esc_html__( 'Linkedin URL', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'linkedinurl',
            'type' => 'text_url',
        ) );
    
        $cmb_user->add_field( array(
            'name' => esc_html__( 'User Field', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'user_text_field',
            'type' => 'text',
        ) );
    
    }
    
    add_action( 'cmb2_admin_init', 'yourprefix_register_taxonomy_metabox' );
    /**
     * Hook in and add a metabox to add fields to taxonomy terms
     */
    function yourprefix_register_taxonomy_metabox() {
        $prefix = 'yourprefix_term_';
    
        /**
         * Metabox to add fields to categories and tags
         */
        $cmb_term = new_cmb2_box( array(
            'id'               => $prefix . 'edit',
            'title'            => esc_html__( 'Category Metabox', 'cmb2' ), // Doesn't output for term boxes
            'object_types'     => array( 'term' ), // Tells CMB2 to use term_meta vs post_meta
            'taxonomies'       => array( 'category', 'post_tag' ), // Tells CMB2 which taxonomies should have these fields
            // 'new_term_section' => true, // Will display in the "Add New Category" section
        ) );
    
        $cmb_term->add_field( array(
            'name'     => esc_html__( 'Extra Info', 'cmb2' ),
            'desc'     => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'       => $prefix . 'extra_info',
            'type'     => 'title',
            'on_front' => false,
        ) );
    
        $cmb_term->add_field( array(
            'name' => esc_html__( 'Term Image', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'avatar',
            'type' => 'file',
        ) );
    
        $cmb_term->add_field( array(
            'name' => esc_html__( 'Arbitrary Term Field', 'cmb2' ),
            'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'   => $prefix . 'term_text_field',
            'type' => 'text',
        ) );
    
    }
    
    add_action( 'cmb2_admin_init', 'yourprefix_register_theme_options_metabox' );
    /**
     * Hook in and register a metabox to handle a theme options page and adds a menu item.
     */
    function yourprefix_register_theme_options_metabox() {
    
        /**
         * Registers options page menu item and form.
         */
        $cmb_options = new_cmb2_box( array(
            'id'           => 'yourprefix_theme_options_page',
            'title'        => esc_html__( 'Theme Options', 'cmb2' ),
            'object_types' => array( 'options-page' ),
    
            /*
             * The following parameters are specific to the options-page box
             * Several of these parameters are passed along to add_menu_page()/add_submenu_page().
             */
    
            'option_key'      => 'yourprefix_theme_options', // The option key and admin menu page slug.
            'icon_url'        => 'dashicons-palmtree', // Menu icon. Only applicable if 'parent_slug' is left empty.
            // 'menu_title'      => esc_html__( 'Options', 'cmb2' ), // Falls back to 'title' (above).
            // 'parent_slug'     => 'themes.php', // Make options page a submenu item of the themes menu.
            // 'capability'      => 'manage_options', // Cap required to view options-page.
            // 'position'        => 1, // Menu position. Only applicable if 'parent_slug' is left empty.
            // 'admin_menu_hook' => 'network_admin_menu', // 'network_admin_menu' to add network-level options page.
            // 'display_cb'      => false, // Override the options-page form output (CMB2_Hookup::options_page_output()).
            // 'save_button'     => esc_html__( 'Save Theme Options', 'cmb2' ), // The text for the options-page save button. Defaults to 'Save'.
            // 'disable_settings_errors' => true, // On settings pages (not options-general.php sub-pages), allows disabling.
        ) );
    
        /**
         * Options fields ids only need
         * to be unique within this box.
         * Prefix is not needed.
         */
        $cmb_options->add_field( array(
            'name'    => esc_html__( 'Site Background Color', 'cmb2' ),
            'desc'    => esc_html__( 'field description (optional)', 'cmb2' ),
            'id'      => 'bg_color',
            'type'    => 'colorpicker',
            'default' => '#ffffff',
        ) );
    
    }
    
    /**
     * Only show this box in the CMB2 REST API if the user is logged in.
     *
     * @param  bool                 $is_allowed     Whether this box and its fields are allowed to be viewed.
     * @param  CMB2_REST_Controller $cmb_controller The controller object.
     *                                              CMB2 object available via `$cmb_controller->rest_box->cmb`.
     *
     * @return bool                 Whether this box and its fields are allowed to be viewed.
     */
    function yourprefix_limit_rest_view_to_logged_in_users( $is_allowed, $cmb_controller ) {
        if ( ! is_user_logged_in() ) {
            $is_allowed = false;
        }
    
        return $is_allowed;
    }
    
    add_action( 'cmb2_init', 'yourprefix_register_rest_api_box' );
    /**
     * Hook in and add a box to be available in the CMB2 REST API. Can only happen on the 'cmb2_init' hook.
     * More info: https://github.com/CMB2/CMB2/wiki/REST-API
     */
    function yourprefix_register_rest_api_box() {
        $prefix = 'yourprefix_rest_';
    
        $cmb_rest = new_cmb2_box( array(
            'id'            => $prefix . 'metabox',
            'title'         => esc_html__( 'REST Test Box', 'cmb2' ),
            'object_types'  => array( 'page' ), // Post type
            'show_in_rest' => WP_REST_Server::ALLMETHODS, // WP_REST_Server::READABLE|WP_REST_Server::EDITABLE, // Determines which HTTP methods the box is visible in.
            // Optional callback to limit box visibility.
            // See: https://github.com/CMB2/CMB2/wiki/REST-API#permissions
            // 'get_box_permissions_check_cb' => 'yourprefix_limit_rest_view_to_logged_in_users',
        ) );
    
        $cmb_rest->add_field( array(
            'name'       => esc_html__( 'REST Test Text', 'cmb2' ),
            'desc'       => esc_html__( 'Will show in the REST API for this box and for pages.', 'cmb2' ),
            'id'         => $prefix . 'text',
            'type'       => 'text',
        ) );
    
        $cmb_rest->add_field( array(
            'name'       => esc_html__( 'REST Editable Test Text', 'cmb2' ),
            'desc'       => esc_html__( 'Will show in REST API "editable" contexts only (`POST` requests).', 'cmb2' ),
            'id'         => $prefix . 'editable_text',
            'type'       => 'text',
            'show_in_rest' => WP_REST_Server::EDITABLE,// WP_REST_Server::ALLMETHODS|WP_REST_Server::READABLE, // Determines which HTTP methods the field is visible in. Will override the cmb2_box 'show_in_rest' param.
        ) );
    }

     

    این example-functions.php هست

×
×
  • اضافه کردن...