Définir menu_order sur la création de New Custom Post?
-
16-10-2019 - |
Question
J'ai créé un type de poste personnalisé appelé video
et j'utilise un plugin appelé Playlist_Order
(qui modifie le champ de menu_order
) pour permettre à l'utilisateur d'utiliser une interface glisser-déposer pour commander leurs vidéos dans une liste de lecture.
Cependant, lors de l'ajout d'un nouveau poste la vidéo apparaît en haut de la liste de lecture, car il a donné une valeur par défaut de menu_order
0
.
Lors de la création d'un nouveau poste vidéo je voudrais qu'il apparaisse enfin dans la liste de lecture -. À savoir requête tous les types de post video
, trouver la plus grande valeur menu_order
puis définissez cette +1
pour le nouveau poste
Comment puis-je mettre en œuvre cette?
La solution
Salut @fxfuture :
Je pense que ce que vous cherchez est le crochet de wp_insert_post_data
. Vous pouvez ajouter ce code au bas du fichier functions.php
de votre thème et / ou vous pouvez l'ajouter à un plug-in:
add_filter('wp_insert_post_data','my_wp_insert_post_data',10,2);
function my_wp_insert_post_data($data, $postarr) {
$post_type = 'video';
if ($data['post_type']==$post_type && get_post($postarr['ID'])->post_status=='draft') {
global $wpdb;
$data['menu_order'] = $wpdb->get_var("SELECT MAX(menu_order)+1 AS menu_order FROM {$wpdb->posts} WHERE post_type='{$post_type}'");
}
return $data;
}
Autres conseils
10 et 2 arguments de la fin du procédé de add_filter sont: la priorité de l'exécution (en option par défaut = 10) et le nombre d'arguments de la nouvelle fonction reçoit (en option par défaut = 1)
la seule raison qu'il apparaît dans le code ci-dessus, il est de changer le numéro par défaut d'argument.
lire la suite ici http://codex.wordpress.org/Function_Reference/add_filter