Bất kỳ hướng dẫn về việc tạo các trang quản trị tùy chỉnh?


7

Về cơ bản, tôi muốn tạo một bảng (tốt nhất là AJAXified) cho phép người dùng nhập một dòng thông tin và có thể thêm các dòng thông tin mới và xóa các dòng đã chọn.

Tôi đã tìm thấy bài viết nàybài đăng này . Mặt thiết kế trông rất đơn giản, nhưng tôi muốn biết về chức năng. Làm cách nào để thêm nội dung trường vào cơ sở dữ liệu và triệu tập chúng sao lưu? Làm cách nào để toàn bộ trang đó được "cắm" vào Wordpress? Tôi thực sự không biết bắt đầu từ đâu.

Tôi đến từ quan điểm của một người tin tưởng vào HTML & CSS, và tương tự như vậy với JS / jQuery, nhưng về cơ bản chỉ là hack mã PHP mà anh ta tìm thấy xung quanh.

Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao, thậm chí có thể nói với tôi rằng nó vượt xa tôi ngay bây giờ và để chơi với plugin X. FWIW, tôi đã xem xét thực hiện việc này với loại bài đăng tùy chỉnh hoặc plugin Magic Field, nhưng tôi muốn có trải nghiệm thân thiện hơn với người dùng.

Cảm ơn nhiều!


bạn đã xem trong codex wordpress
xLRDxREVENGEx

2
Vâng, tôi đã dành khá nhiều thời gian ở đó, và thật tuyệt khi tìm hiểu một số thứ. Có rất nhiều thông tin hữu ích về việc đăng ký các loại bài đăng tùy chỉnh mà tôi đã thực hiện nhiều lần. Tuy nhiên, bất cứ điều gì về việc tạo toàn bộ trang quản trị mới chỉ làm tôi khó chịu và cung cấp cho tôi vô số thông tin trên đầu và dường như không liên quan, cho dù đó có thực sự là hay không.
Jodi Warren

Vâng, tôi biết ý của bạn là gì, tôi có xu hướng nhìn vào các plugin khác có ui
xLRDxREVENGEx

Câu trả lời:


8

Tôi đã bắt đầu ở cùng một nơi với bạn một thời gian và đã tạo ra một cái gì đó tương tự. Đây là những gì tôi nghĩ bạn cần biết.

1) Tìm ra cách tạo thế giới xin chào cơ bản trước hết. Một plugin đơn giản sẽ bao gồm một vài bình luận ở đầu tệp PHP được thả vào thư mục plugin của bạn. Lưu ý biến gọi lớp mà nó di chuyển. Trình xây dựng của lớp gọi add_top_level_menu, khi điều này được nhấp vào (xem biến hàm $), hàm display_page () sẽ được khởi động để bắt đầu xây dựng trang của bạn.

<?php
/*
 Plugin Name: Your plugin name
 Description: Description
 Version: 1.0
 Author: Your Name
 Author URI: http://yourweb.com
*/
$myplugvariable = new yourpluginname();
class yourpluginname
{
  function __construct(){
  add_action( 'admin_menu', array( &$this, 'add_top_level_menu' ) );
  }

  function add_admin_scripts(){
  //adds javavascript files for this plugin.
   wp_enqueue_script('my-script-name', WP_PLUGIN_URL . '/' . dirname(plugin_basename(__FILE__)) . '/js/javascript.js', array('jquery'), '1.0');
   wp_localize_script('my-script-name', 'MyScriptAjax', array('ajaxUrl' => admin_url('admin-ajax.php')));
  }

   function add_top_level_menu()
   {
        // Settings for the function call below
        $page_title = 'Plugin Name';
        $menu_title = 'Plugin Name';
        $menu_slug = 'plugin-name';
        $function = array( &$this, 'display_page' );
        $icon_url = NULL;
        $position = '';

        // Creates a top level admin menu - this kicks off the 'display_page()' function to build the page
        $page = add_menu_page($page_title, $menu_title, $this->capability, $menu_slug, $function, $icon_url, 10);

        // Adds an additional sub menu page to the above menu - if we add this, we end up with 2 sub menu pages (the main pages is then in sub menu. But if we omit this, we have no sub menu
        // This has been left in incase we want to add an additional page here soon
        //add_submenu_page( $menu_slug, $page_title, $page_title, $capability, $menu_slug . '_sub_menu_page', $function );


    }

    function display_page()
    {
        if (!current_user_can($this->capability ))
        wp_die(__('You do not have sufficient permissions to access this page.'));
      //here comes the HTML to build the page in the admin.
      echo('HELLO WORLD');

    }


}

?>

2) Khi bạn đã tạo các chức năng nội bộ để trả về dữ liệu của mình, bất cứ điều gì có thể. (sử dụng các hàm dữ liệu wordpress toàn cầu, ví dụ $ wpdb-> get_results ($ sql).

3) AJAX bên trong quản trị viên hơi khác so với cách bạn thường sử dụng. Tất cả các cuộc gọi AJAX của wordpress móc vào admin-ajax.php. Tôi tìm thấy cái này: http://www.garyc40.com/2010/03/5-tips-for-USE-ajax-in-wordpress/#js-global khá giỏi trong việc giải thích mọi thứ.

4) Nếu bạn đang tạo bảng: một cái gì đó như dưới đây sẽ làm việc cho bạn. tìm kiếm dbDelta trong codex.

function plugin_install() 
    {
    global $wpdb;
    $table_name_prefix = "plugin-name";
    $table_name = $wpdb->prefix . "plugin_name"; 
    $sql = "CREATE TABLE " . $table_name . " (
         id mediumint(9) NOT NULL AUTO_INCREMENT,
         post_id mediumint(9) NOT NULL,
         score mediumint(9) NOT NULL
    );";
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
    }

Ồ đúng rồi, vậy về cơ bản tôi muốn tạo một plugin? Điều đó chỉ làm rõ rất nhiều điều! Tôi không muốn làm bất cứ điều gì để phân phối công khai, vì vậy tôi thậm chí không bao giờ bận tâm đến việc phát triển plugin. Cảm ơn bạn, tôi sẽ giải quyết vấn đề này khi tôi có thêm một chút thời gian trên tay (đã hết thời hạn cuối tuần điên rồ / khó chịu ngay bây giờ.) Tôi thực sự đánh giá cao thời gian dành cho tôi một cách đơn giản, rõ ràng, được đánh dấu rõ ràng bit của mã. Bắt đầu đơn giản là dường như là vấn đề tôi gặp phải!
Jodi Warren

0

Xin chào, tôi muốn đề xuất các MetaBox WPAlchemy. Rất dễ sử dụng, và nó sẽ giúp với những gì bạn đang theo đuổi.

Tuy nhiên, hãy nhớ rằng nó chưa phải là một plugin, vì vậy bạn sẽ không có "thiết lập một lần nhấp" để bắt đầu.

http://www.farinspace.com/wpalchemy-metabox/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.