Irgendwelche Anleitungen zum Erstellen benutzerdefinierter Administrationsseiten?


7

Grundsätzlich möchte ich eine Tabelle (vorzugsweise AJAXified) erstellen, in der der Benutzer eine Informationszeile eingeben und neue Informationszeilen hinzufügen und ausgewählte löschen kann.

Ich habe diesen Beitrag und diesen Beitrag gefunden . Die Design-Seite sieht sehr einfach aus, aber ich möchte etwas über die Funktionalität wissen. Wie füge ich den Feldinhalt zur Datenbank hinzu und rufe ihn wieder auf? Wie kann ich diese Seite in Wordpress als Ganzes "einstecken"? Ich habe buchstäblich keine Ahnung, wo ich anfangen soll.

Ich komme aus der Perspektive von jemandem, der mit HTML und CSS vertraut ist, und zwar mit JS / jQuery, aber im Grunde nur PHP-Code, den er findet.

Jede Hilfe wäre dankbar, selbst wenn Sie mir sagen würden, dass es mir momentan nicht möglich ist, und mit dem X-Plugin spielen könnten. FWIW, ich habe überlegt, dies mit einem benutzerdefinierten Beitragstyp oder dem Magic Fields-Plugin zu tun, aber ich wollte eine benutzerfreundlichere Erfahrung.

Danke vielmals!


Haben Sie im WordPress-Codex
xLRDxREVENGEx

2
Ja, ich habe ziemlich viel Zeit dort verbracht und es ist großartig, einige Dinge herauszufinden. Es gibt viele nützliche Informationen zum Registrieren von benutzerdefinierten Beitragstypen, die ich schon oft gemacht habe. Alles, was mit dem Erstellen ganz neuer Administrationsseiten zu tun hat, verwirrt mich nur und gibt mir eine Menge Informationen, die mir über den Kopf gehen und irrelevant erscheinen, ob sie tatsächlich vorhanden sind oder nicht.
Jodi Warren

Ja, ich weiß, was du meinst. Ich neige dazu, mir andere Plugins anzusehen, die eine
UI

Antworten:


8

Ich habe vor einiger Zeit so ziemlich am selben Ort wie Sie angefangen und etwas Ähnliches geschaffen. Ich denke, Sie müssen Folgendes wissen.

1) Erarbeiten Sie in erster Linie, wie Sie Ihre grundlegende Hallo-Welt erstellen können. Ein einfaches Plugin besteht aus einigen Kommentaren oben in einer PHP-Datei, die in Ihrem Plugins-Verzeichnis abgelegt wird. Beachten Sie die Variable, die die Klasse aufruft, die sie in Bewegung setzt. Der Konstruktor der Klasse ruft add_top_level_menu auf. Wenn Sie darauf klicken (siehe $ Funktionsvariable), wird die Funktion display_page () gestartet, um Ihre Seite aufzubauen.

<?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) Sobald Sie interne Funktionen erstellt haben, um Ihre Daten zurückzugeben, was auch immer das sein mag. (Verwenden Sie globale WordPress-Datenfunktionen, z. B. $ wpdb-> get_results ($ sql).

3) AJAX im Administrator unterscheidet sich ein wenig von der normalen Verwendung. Alle WordPress AJAX-Aufrufe hängen an admin-ajax.php. Ich fand das ziemlich gut darin, Dinge zu erklären : http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/#js-global .

4) Wenn Sie Tabellen erstellen: So etwas wie das Folgende erledigt die Arbeit für Sie. Suche im Codex nach 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);
    }

Oh, richtig, also möchte ich im Grunde ein Plugin erstellen? Das hat so viele Dinge geklärt! Ich wollte nichts für die öffentliche Verbreitung machen, also habe ich mich nie mit der Entwicklung von Plugins befasst. Vielen Dank, ich werde das durcharbeiten, wenn ich etwas mehr Zeit habe (momentan auf verrückte / nervige Wochenendtermine gedrängt). Ich schätze die Zeit sehr, die ich gebraucht habe, um mir eine schöne, einfache und klar gekennzeichnete Zeit zu geben Bit Code. Einfach genug anzufangen scheint das Problem zu sein, das ich hatte!
Jodi Warren

0

Hey, ich würde WPAlchemy MetaBoxes vorschlagen. Sehr einfach zu bedienen, und es sollte helfen, was Sie suchen.

Beachten Sie jedoch, dass es sich noch nicht um ein Plugin handelt, sodass Sie nicht mit einem Ein-Klick-Setup beginnen müssen.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.