web-dev-qa-db-fra.com

Des guides sur la création de pages d’administrateur personnalisées?

Je souhaite créer un tableau (de préférence AJAXified) qui permette à l’utilisateur de saisir une ligne d’informations, d’ajouter de nouvelles lignes et de supprimer celles sélectionnées.

J'ai trouvé ce post et ce post . La conception semble très simple, mais je veux en savoir plus sur les fonctionnalités. Comment puis-je ajouter le contenu du champ à la base de données et les appeler à nouveau? Comment puis-je "brancher" cette page à Wordpress dans son ensemble? Je n'ai littéralement aucune idée par où commencer.

Je viens du point de vue de quelqu'un qui a confiance en HTML & CSS, et assez bien avec JS/jQuery, mais qui ne fait que hacker le code PHP qu'il trouve autour.

Toute aide serait appréciée, même jusqu’à me dire que c’est au-delà de moi maintenant et que je vais jouer avec le plugin X. FWIW, j’envisageais de faire cela avec un type de publication personnalisé, ou le plugin Magic Fields, mais je voulais une expérience plus conviviale.

Merci beaucoup!

7
Jodi Warren

J'ai commencé à peu près au même endroit que vous il y a quelque temps et j'ai créé quelque chose de similaire. Voici ce que je pense que vous devez savoir.

1) Déterminez comment créer votre monde de base bonjour avant tout. Un simple plugin sera composé de quelques commentaires en haut d'un fichier PHP déposé dans votre répertoire plugins. Remarquez la variable appelant la classe qui la fait bouger. Le constructeur de la classe appelle add_top_level_menu. Lorsque vous cliquez dessus (voir la variable $ function), la fonction display_page () est supprimée et commence à générer votre 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) Une fois que vous avez créé des fonctions internes pour renvoyer vos données, peu importe. (utilisez des fonctions de données wordpress globales, par exemple $ wpdb-> get_results ($ sql).

3) AJAX à l'intérieur de l'administrateur est un peu différent de la façon dont vous l'utilisez normalement. Tous les wordpress AJAX appels _ se connectent à admin-ajax.php. J'ai trouvé ceci: http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/#js-global très bon pour expliquer les choses.

4) Si vous créez des tables: une chose comme celle ci-dessous fera le travail pour vous. recherchez dbDelta dans le 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);
    }
8
Squiggs.

Salut, je suggérerais WPAlchemy MetaBoxes. Très facile à utiliser, cela devrait vous aider.

Cependant, gardez à l’esprit que ce n’est pas encore un plugin, vous n’avez donc pas à commencer par une "configuration en un clic".

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

0
Joe