web-dev-qa-db-ja.com

カスタム管理ページの作成に関するガイドはありますか?

基本的に、ユーザーが情報行を入力し、新しい情報行を追加したり、選択した行を削除したりできるようにするテーブル(できればAJAXified)を作成します。

この記事 そして この記事 デザイン面は非常に単純に見えますが、機能について知りたいのです。データベースにフィールドの内容を追加してバックアップすることをどのようにして行えばよいですか。そのページをWordpress全体に「プラグイン」するにはどうすればよいですか。どこから始めればよいのか、文字通りわかりません。

私はHTMLとCSSに自信を持っている人、そしてJS/jQueryを使っている人の観点から来ていますが、基本的に彼が見つけたPHPコードをハックするだけです。

手助けがあれば、それが今は私の枠を超えていると言って、Xプラグインを使って遊びに行くことさえできればありがたいです。ところで、私はこれをカスタム投稿タイプ、またはMagic Fieldsプラグインを使って行うことを検討していましたが、もっとユーザーフレンドリーなエクスペリエンスを望んでいました。

どうもありがとう!

7
Jodi Warren

私はしばらく前にあなたと同じ場所で始めて、そして類似した何かを作成しました。これが私があなたが知る必要があると思うものです。

1)あなたの基本的なこんにちは世界を最初にそして何よりも作成する方法を考え出しなさい。単純なプラグインは、プラグインディレクトリにドロップされたPHPファイルの先頭にあるいくつかのコメントで構成されます。変数が移動するクラスを呼び出すことに注目してください。このクラスのコンストラクタはadd_top_level_menuを呼び出します。これがクリックされると($ function variableを参照)display_page()関数があなたのページを構築し始めます。

<?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)データを返すための内部関数を作成したら、それがなんであれ。 (グローバルなワードプレスデータ関数を使用してください、例えば$ wpdb-> get_results($ sql)。

3)admin内のAJAXは、通常の使い方とは少し異なります。すべてのwordpress AJAX呼び出しはadmin-ajax.phpにフックします。私はこれを見つけました: http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/#js-global 物事を説明するのが得意です。

4)あなたがテーブルを作成しているなら:以下のようなものがあなたのために仕事をするでしょう。コーデックスでdbDeltaを検索します。

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);
    }
8
Squiggs.

こんにちは、私はWPAlchemy MetaBoxをお勧めします。非常に使いやすく、そしてそれはあなたが何をしているかに役立つはずです。

ただし、これはまだプラグインではないため、開始するための「ワンクリック設定」はありません。

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

0
Joe