it-swarm-eu.dev

Definovat menu_order na Vytvoření nového vlastního příspěvku?

Vytvořil jsem vlastní typ příspěvku nazvaný video a používám plugin nazvaný Playlist_Order (který mění pole menu_order), aby uživatel mohl použít rozhraní drag and drop pro objednání svých videí v seznamu videí.

Při přidávání nového příspěvku se však video zobrazí v horní části seznamu stop, protože má výchozí hodnotu menu_order0.

Při vytváření nového video příspěvku bych chtěl, aby se objevil naposledy v seznamu videí - tj. Dotazoval se na všechny typy video příspěvků, našel největší hodnotu menu_order a pak nastavte tento +1 pro nový příspěvek.

Jak to mohu implementovat?

1
fxfuture

Ahoj @ fxfuture :

Myslím, že to, co hledáte, je wp_insert_post_data hook. Tento kód můžete přidat do dolní části souboru functions.php a můžete jej přidat do pluginu:

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

argumenty 10 a 2 na konci metody add_filter jsou: priorita provedení (volitelné výchozí = 10) a počet argumentů, které nová funkce přijímá (volitelné výchozí = 1)

jediný důvod, proč se objeví v kódu výše, je změnit výchozí počet argumentů.

více zde http://codex.wordpress.org/Function_Reference/add_filter

1
ralor