WP - custom admin page
<?php require_once("save.php"); ?>
<div class="wrap">
<div id="icon-edit" class="icon32 icon32-posts-evenement"><br /></div>
<h2>Page d'accueil
<a class="add-new-h2" href="admin.php?page=blocs_menu">Ajouter une page blocs</a>
<a class="add-new-h2" href="admin.php?page=magazines_menu">Ajouter une page Magazine</a>
</h2>
<p></p>
<table class="wp-list-table widefat fixed posts" cellspacing="0">
<thead>
<tr>
<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
<input type="checkbox">
</th>
<th style="" class="manage-column column-title sortable desc" id="title" scope="col">
<a href="#"><span>Titre</span><span class="sorting-indicator"></span></a>
</th>
<th style="" class="manage-column column-author sortable desc" id="author" scope="col">
<a href="#"><span>Type</span><span class="sorting-indicator"></span></a>
</th>
<th style="" class="manage-column column-actif sortable asc" >
<a href="#"><span>État</span><span class="sorting-indicator"></span></a>
</th>
</tr>
</thead>
<tbody id="the-list">
<?php
$results = get_accueils();
if(!empty($results)){
foreach($results as $r){
?>
<tr class="items">
<td style="" class="manage-column column-cb check-column" id="cb" scope="col">
</td>
<td style="" class="post-title page-title column-title" id="title" scope="col">
<?php if($r->type == 'blocs'){ $modif_page = 'blocs_menu'; } else { $modif_page = 'magazines_menu'; } ?>
<strong><a href="admin.php?page=<?php echo $modif_page;?>&id=<?php echo $r->id;?>"><span><?php echo $r->titre;?></span><span class="sorting-indicator"></span></a></strong>
<div class="row-actions">
<a href="admin.php?page=<?php echo $modif_page;?>&id=<?php echo $r->id;?>">Modifier la page</a> |
<a class="submitdelete" href="admin.php?page=accueil_menu&sup=<?php echo $r->id;?>&wpnonce=<?php echo wp_create_nonce("del_accueil_nonce");?>">supprimer</a>
</div>
</td>
<td style="" class="post-title page-title column-title" id="author" scope="col">
<span><?php echo $r->type;?></span><span class="sorting-indicator"></span>
</td>
<td style="" class="post-title page-title column-title">
<?php
if($r->active == 0){
$actif = '';
$ouiNon = 'définir comme actif';
$href = 'admin.php?page=accueil_menu&active='.$r->id.'&wpnonce='.wp_create_nonce("active_accueil_nonce");
} else {
$actif = $ouiNon = 'actif';
$href = '#';
}
?>
<a class="<?php echo $actif;?> setActif" href="<?php echo $href;?>"><span><?php echo $ouiNon;?></span><span class="sorting-indicator"></span></a>
</td>
</tr>
<?php
}
} else {
echo '<tr class="no-items"><td colspan="4" class="colspanchange">Aucun évènement de trouvé</td></tr>';
}
?>
</tbody>
<tfoot>
<tr>
<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
<input type="checkbox">
</th>
<th style="" class="manage-column column-title sortable desc" id="title" scope="col">
<a href="#"><span>Titre</span><span class="sorting-indicator"></span></a>
</th>
<th style="" class="manage-column column-author sortable desc" id="author" scope="col">
<a href="#"><span>Type</span><span class="sorting-indicator"></span></a>
</th>
<th style="" class="manage-column column-date sortable asc" id="date" scope="col">
<a href="#"><span>État</span><span class="sorting-indicator"></span></a>
</th>
</tr>
</tfoot>
</table>
<br class="clear">
</div>
<!--
<label for="upload_image">
<input id="upload_image" size="36" name="upload_image" type="text" />
<input id="upload_image_button" class="button-secondary" value="Ajouter une Image" type="button" />
</label>
<div id="imgContener"></div>
-->
<!--
<div id="post-body" class="metabox-holder columns-2">
<div id="post-body-content">
<div id="normal-sortables" class="meta-box-sortables ui-sortable">
<div id="meta_lieu" class="postbox ">
<div class="handlediv" title="Cliquer pour inverser."><br /></div>
<h3 class="hndle"></h3>
</div>
</div>
</div>
</div>
-->
<?php
/*
*------------------------------
* RECUPERATION DES VARIABLES
*------------------------------
*/
if(!empty($_POST) && current_user_can('delete_posts')){
if (!isset($_POST['accueil_box_noncename']) || !wp_verify_nonce($_POST['accueil_box_noncename'],"accueil_nonce")) die('erreur de sécurité');
$data = array();
if(isset($_POST['post_title'])){
$title = filter_var($_POST['post_title'], FILTER_SANITIZE_STRING);
if($title == ''){
$title = formate_date(date('Y-m-d', time()));
}
$data['titre'] = $title;
}
if(isset($_POST['contenu_accueil_box'])){
$contenu = stripcslashes($_POST['contenu_accueil_box']);
$data['contenu'] = str_replace("\t", '', $_POST['contenu_accueil_box']);
$data['contenu'] = trim($data['contenu']);
$contenu_front = stripcslashes($_POST['contenu_accueil_front']);
$data['contenu_front'] = str_replace("\t", '', $_POST['contenu_accueil_front']);
$data['contenu_front'] = trim($data['contenu_front']);
}
$allowed_types = array("blocs", "magazine");
$type = $_POST['type'];
if(!in_array($type, $allowed_types)){
$type = 'blocs';
}
$data['type'] = $type;
/*
*--------------------------
* ENREGISTREMENT
*--------------------------
*/
global $wpdb;
$table = $wpdb->prefix . "_accueil_pages";
if(isset($_GET['id']) && filter_var($_GET['id'], FILTER_VALIDATE_INT) || isset($_POST['id']) && filter_var($_POST['id'], FILTER_VALIDATE_INT)){
if(isset($_POST['id'])){ $id = filter_var($_POST['id'], FILTER_SANITIZE_NUMBER_INT); }
if(isset($_GET['id'])){ $id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT); }
$wpdb->update( $table, $data, array( 'id' => $id ), array('%s','%s','%s'), array("%d") );
} else {
$wpdb->insert($table, $data, array('%s','%s','%s'));
$id = $wpdb->insert_id;
//wp_redirect(admin_url('admin.php?page=blocs_menu&id='.$id));
}
}
/*
*--------------------------
* SUPPRESSION
*--------------------------
*/
if(isset($_GET['sup']) && filter_var($_GET['sup'], FILTER_VALIDATE_INT) && $_GET['page'] == 'accueil_menu'){
global $wpdb;
$table = $wpdb->prefix . "_accueil_pages";
if (!isset($_GET['wpnonce']) || !wp_verify_nonce($_GET['wpnonce'],"del_accueil_nonce")) die('erreur de sécurité');
$id = filter_var($_GET['sup'], FILTER_SANITIZE_NUMBER_INT);
$wpdb->query(
$wpdb->prepare(
"
DELETE FROM $table
WHERE id = %d
",
$id
)
);
}
/*
*--------------------------
* ACTIVATION
*--------------------------
*/
if(isset($_GET['active']) && filter_var($_GET['active'], FILTER_VALIDATE_INT) && $_GET['page'] == 'accueil_menu'){
global $wpdb;
$table = $wpdb->prefix . "_accueil_pages";
if (!isset($_GET['wpnonce']) || !wp_verify_nonce($_GET['wpnonce'],"active_accueil_nonce")) die('erreur de sécurité');
$id = filter_var($_GET['active'], FILTER_SANITIZE_NUMBER_INT);
set_not_active_accueil();
set_active_accueil($id);
}
<?php
$data['titre'] = '';
$data['contenu'] = '';
$data['active'] = 0;
if(!empty($_POST)){
if (!isset($_POST['accueil_box_noncename']) || !wp_verify_nonce($_POST['accueil_box_noncename'],"accueil_nonce")) die('erreur de sécurité');
require_once('save.php');
}
if(isset($_GET['id']) && filter_var($_GET['id'], FILTER_VALIDATE_INT)){
$id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);
global $wpdb;
$data = get_accueil($id);
if(empty($data)){
die('<h2>Ce post n\'existe pas !!</h2>');
}
}
?>
<div class="wrap">
<div id="icon-edit" class="icon32 icon32-posts-evenement"><br /></div>
<h2>Ajouter une page blocs</h2>
<p></p>
<form id="accueil" method="post" action="">
<?php echo '<input type="hidden" name="accueil_box_noncename" value="' . wp_create_nonce("accueil_nonce") . '" />';?>
<?php if(isset($id)){ echo '<input type="hidden" name="id" value="'.$id.'" />'; } ?>
<input type="hidden" name="type" value="blocs" />
<div id="poststuff">
<div id="titlediv">
<div id="titlewrap">
<label for="title" id="title-prompt-text" style="" class="hide-if-no-js">Saisissez le titre ici</label>
<input type="text" autocomplete="off" id="title" value="<?php echo $data['titre'];?>" tabindex="1" size="30" name="post_title">
</div>
</div>
<p>
<a id="ajoutSingleBlocAccueil" class="button" href="#">Ajouter un bloc Simlpe</a>
<a id="ajoutDoubleBlocAccueil" class="button" href="#">Ajouter un bloc Double</a>
<a id="ajoutDoubleBlocLogoAccueil" class="button" href="#">Ajouter un bloc LOGO</a>
<textarea class="hidden" id="contenu_accueil_front" name="contenu_accueil_front"><?php echo stripslashes($data['contenu_front']);?></textarea>
<textarea id="contenu_accueil_box" name="contenu_accueil_box"><?php echo stripslashes($data['contenu']);?></textarea>
<input type="submit" id="saveBlocAccueil" class="button-primary right" href="#" value="Enregistrer">
<div class="clear"></div>
</p>
</form>
<p></p>
<div id="post-body" class="metabox-holder columns-2">
<div id="post-body-content">
<div id="normal-sortables" class="meta-box-sortables ui-sortable">
<div id="meta_lieu" class="postbox ">
<h3 class="hndle">Blocs</h3>
<div class="inside noMargin">
<div class="custom blocsSortable">
<?php
if($data['contenu'] == ''){
include('blocs_template.php');
} else {
echo stripslashes($data['contenu']);
}
?>
</div>
</div>
</div>
</div>
</div>
<div id="postbox-container-1" class="postbox-container">
<div id="side-sortables" class="meta-box-sortables ui-sortable">
<div class="postbox " id="formatdiv">
<h3 class="hndle"><span>Contenu</span></h3>
<div class="inside">
<div id="post-formats-select">
<form id="saveAccueilForm" method="post" action="">
<div id="form_back_accueil">
<div class="formBox box-form-1" data-id="1">
<p>
Titre : <input id="titre_accueil_input" class="titre_accueil_input" data-id="1" style="width:98%" type="text" name="box[1][titre]" />
</p>
<?php wp_editor('','test',array(
'media_buttons' => false,'textarea_rows' => 8,'tabindex' => 4,'teeny' => false,
'tinymce' => array(
'theme_advanced_buttons1' => 'bold, italic, link, NextGEN',
'theme_advanced_buttons2' => '',
'force_br_newlines' => true,
'force_p_newlines' => false,
'forced_root_block' => ''
),
)
);
?>
<p><a href="#" class="button" id="updateText">Mettre à jour</a></p>
<div class="separateur"></div>
<p>
Couleur de fond :
<div data-bg="bg-blanc" class="setBg bg-blanc"></div>
<div data-bg="bg-bleu" class="setBg bg-bleu"></div>
<div data-bg="bg-rose" class="setBg bg-rose"></div>
<div data-bg="bg-jaune" class="setBg bg-jaune"></div>
<div data-bg="bg-ciel" class="setBg bg-ciel"></div>
<div data-bg="bg-orange" class="setBg bg-orange"></div>
<div data-bg="bg-vert" class="setBg bg-vert"></div>
<div data-bg="bg-rouge" class="setBg bg-rouge"></div>
</p>
<p>
Couleur de texte :
<div data-txt="txt-blanc" class="setTxt txt-blanc"></div>
<div data-txt="txt-noir" class="setTxt txt-noir bg-noir"></div>
</p>
<div class="separateur"></div>
<p>
<label for="upload_image">
<input class="upload_image image-1" size="36" data-id="1" name="box[1][image]" type="hidden" />
<input id="upload_image_bloc" class="upload_image_bloc button-secondary" data-id="1" value="Ajouter une Image" type="button" />
<input id="delete_image_button" class="delete_image_button button" data-id="1" value="Retirer l'Image" type="button" />
</label>
<div id="imgContener" class="imgContener image-1"></div>
</p>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br class="clear">
</div>
<div id="BoxDoubleExemple">
<div class="blocsContener">
<a class="remove"> supprimer </a>
<div data-id="num" class="homeBox demi box-num bg-blanc txt-noir">
<h3></h3>
<div class="contentBox"></div>
</div>
<div data-id="num2" class="homeBox demi box-num2 bg-blanc txt-noir">
<h3></h3>
<div class="contentBox"></div>
</div>
<div class="clear"></div>
</div>
</div>
<div id="BoxDoubleLogoExemple" class="hidden">
<div class="blocsContener" id="logoBox">
<a class="remove"> supprimer </a>
<div data-id="num" class="homeBox demi box-num bg-blanc txt-noir">
<div id="logoBoxContener"></div>
<div class="contentBox"></div>
</div>
<div data-id="num2" class="homeBox demi box-num2 bg-blanc txt-noir">
<h3></h3>
<div class="contentBox"></div>
</div>
<div class="clear"></div>
</div>
</div>
<div id="BoxSimpleExemple">
<div class="blocsContener">
<a class="remove"> supprimer </a>
<div data-id="num" class="homeBox full box-num bg-blanc txt-noir">
<h3></h3>
<div class="contentBox"></div>
</div>
<div class="clear"></div>
</div>
</div>
<div id="contenuFrontFilter" class="hidden"></div>
<?php
// CREATION DE LA TABLE DANS LA BDD
if(isset($_GET['page']) && $_GET['page'] == 'accueil_menu'){
/*
*--------------------------
* CREATION DE LA TABLE
*--------------------------
*/
$table_name = $wpdb->prefix . "_accueil_pages";
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
global $wpdb;
$sql =
"CREATE TABLE `comediedereims`.`$table_name` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titre` VARCHAR( 255 ) NOT NULL ,
`contenu` LONGTEXT NOT NULL ,
`contenu_front` LONGTEXT NOT NULL ,
`type` VARCHAR( 8 ) NOT NULL ,
`active` INT( 1 ) NOT NULL
) ENGINE = InnoDB;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
}
add_action('admin_menu', 'register_accueil_menu_page');
// add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
// add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
function register_accueil_menu_page() {
add_menu_page('Accueil', 'Accueil Reims', 'delete_posts', 'accueil_menu', 'accueil_admin_view', '', 3);
add_submenu_page('accueil_menu', 'Ajouter une page blocs', 'Ajouter une page blocs', 'delete_posts', 'blocs_menu', 'ajout_accueil' );
add_submenu_page('accueil_menu', 'Ajouter une page magazines', 'Ajouter une page magazines', 'delete_posts', 'magazines_menu', 'manage_magazine' );
}
function accueil_admin_view(){
require_once('view.php');
}
function ajout_accueil(){
require_once('ajout_view.php');
}
function manage_magazine(){
require_once('ajout_magazine_view.php');
}
function manage_alerte(){
require_once('ajout_alerte_view.php');
}