it-swarm.com.de

Menu_order beim Erstellen eines neuen benutzerdefinierten Beitrags definieren?

Ich habe einen benutzerdefinierten Beitragstyp mit dem Namen video erstellt und verwende ein Plugin mit dem Namen Playlist_Order (das das Feld menu_order ändert), damit der Benutzer die Videos in einer Wiedergabeliste mithilfe einer Drag & Drop-Oberfläche sortieren kann.

Wenn Sie jedoch einen neuen Beitrag hinzufügen, wird das Video oben in der Wiedergabeliste angezeigt, da ihm der menu_order-Standardwert 0 zugewiesen wurde.

Beim Erstellen eines neuen Videopostes möchte ich, dass er zuletzt in der Wiedergabeliste angezeigt wird - d. H. Alle Posttypen von video abfragen, den größten menu_order-Wert finden und dann diesen +1 für den neuen Post festlegen.

Wie kann ich das umsetzen?

1
fxfuture

Hi @ fxfuture :

Ich denke, was Sie suchen, ist der Haken wp_insert_post_data. Sie können diesen Code unten in die functions.php-Datei Ihres Themas einfügen und/oder einem Plugin hinzufügen:

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;
}
5
MikeSchinkel

die 10 und 2 Argumente am Ende der Methode add_filter sind: Die Priorität der Ausführung (optionaler Standardwert = 10) und die Anzahl der Argumente, die die neue Funktion erhält (optionaler Standardwert = 1).

der einzige Grund, warum es im obigen Code angezeigt wird, ist die Änderung der Standardargumentanzahl.

lesen Sie hier mehr http://codex.wordpress.org/Function_Reference/add_filter

1
ralor