12/08/2018, 16:39

Cách đưa widget search của plugin event search manager ra home page

Vừa rồi mình có bắt gặp 1 yêu cầu mà rất nhiều người khi xài plugin Event Manager rất mong muốn là đưa khung search này ra đầu homepage thay vì một page detail được đăng kí như mặc định. Vì plugin này không hỗ trợ gì hơn nên bắt buộc mình phải viết 1 plugin để custom thằng này. Cách làm bao gồm 3 ...

Vừa rồi mình có bắt gặp 1 yêu cầu mà rất nhiều người khi xài plugin Event Manager rất mong muốn là đưa khung search này ra đầu homepage thay vì một page detail được đăng kí như mặc định. Vì plugin này không hỗ trợ gì hơn nên bắt buộc mình phải viết 1 plugin để custom thằng này. Cách làm bao gồm 3 bước:

  • Tạo plugin custom
  • Tạo 1 sidebar để hiển thị trên top homepage
  • Tạo ra 1 widget custom để show form search, và thêm widget này vào sidebar ở trên.

Các thao tác cần thực hiện:

  • Tạo một folder custom-me trong thư mục plugins, và file custom-me.php trong thư mục đó với phần mở đầu:
<?php
/**
* Plugin Name: Custom me
* Plugin URI: http://phanngoc.com/
* Description: A brief description about your plugin.
* Version: 1.0
* Author: Phan Ngoc
* Author URI: http://phanngoc.com/
* License: A "Slug" license name e.g. GPL12
*/

Đây là cách tạo plugin trong wordpress, mình xin skip mấy cái basic wordpress, mọi người có thể tự tìm hiểu được ạ.

  • Thêm vào file custome-me.php đoạn code đăng kí sidebar:
/**
 * Register Sidebar
 */
function custom_me_register_sidebars() {

    /* Register the primary sidebar. */
    register_sidebar(
        array(
            'id' => 'calendar-sidebar',
            'name' => __( 'Manage event', 'textdomain' ),
            'description' => __( 'A short description of the sidebar.', 'textdomain' ),
            'before_widget' => '<aside id="%1$s" class="widget %2$s">',
            'after_widget' => '</aside>',
            'before_title' => '<h3 class="widget-title">',
            'after_title' => '</h3>'
        )
    );

    /* Repeat register_sidebar() code for additional sidebars. */
}
add_action( 'widgets_init', 'custom_me_register_sidebars' );

Khung sidebar này mình sẽ cho đặt tại top của homepage như yêu cầu mình đã mô tả ở trên, trong file index.php của theme đang được active, các bạn thêm đoạn code này vào phần muốn hiển thị nhé (như các bạn thấy mình sẽ đưa id đã đăng kí ở trên vào):

  <?php dynamic_sidebar( 'calendar-sidebar' ); ?>
  • Ồ vậy giờ còn việc là mình sẽ đăng kí widget nhé             </div>
            
            <div class=
0