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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top