Vlastní hromadné úpravy ve WordPress 4.7

Další novinkou, se kterou se ve WordPress 4.7 potkáme, je možnost vytvoření vlastní hromadné úpravy.

Hromadná úprava je známá featura WordPressu, kde si můžeme v selectu vybrat, co chceme udělat s vybranými posty.

 

Vytvoření vlastní akce, můžeme rozdělit do tří kroků:

  • Přidání akce do výběru
  • Callback funkce pro provedení zamýšlených úprav
  • Admin notice pro tuto akci

Přidání funkce do výběru:

Pro registraci funkce použijeme filter bulk_actions-{screen-id} a na konec pole výběru přidáme naši položku:

add_filter( 'bulk_actions-edit-post', 'register_my_bulk_actions' );
function register_my_bulk_actions($bulk_actions) {
  $bulk_actions['moje_akce'] = __( 'Moje akce', 'lang_domain');
  return $bulk_actions;
}
Callback funkce:
Jako další krok, vytvoříme callback funkci. Použijeme filter handle_bulk_actions-{screen-edit} a ve funkci můžeme pracovat s $redirect_to, $doactions a $post_ids. V redirectu máme vloženou url, čehož využijeme k přidání parametrů, po úspěšném provedení akce. V doaction je klíč z pole, jenž jsme rozšířili, v tomto případě – moje_akce. Jako poslední proměnná je zde seznam id všech postů, jenž máme označené.
V případě, že se jedná o správnou akci, projdeme všechny posty a uložíme například nějaký custom field, nebo cokoliv budeme chtít upravit.
Na závěr přesměrujeme na upravenou url.
add_filter( 'handle_bulk_actions-edit-post', 'my_bulk_action_handler', 10, 3 );
functionmy_bulk_action_handler( $redirect_to, $doaction, $post_ids) {
  if( $doaction!== 'moje_akce') {
    return$redirect_to;
  }
  foreach( $post_idsas$post_id) {
    update_post_meta( $post_id, '_check_post_by_admin', 'zkontrolováno' ); 
  }
  $redirect_to= add_query_arg( 'bulk_moje_akce_posts', count( $post_ids), $redirect_to);
  return$redirect_to;
}
Vložení admin notice:
Admin notice, je upozornění, zobrazované například, po aktualizaci pluginu. A my si vytvoříme vlastní.
add_action( 'admin_notices', 'my_bulk_action_admin_notice');
functionmy_bulk_action_admin_notice() {
  if( ! empty( $_REQUEST['bulk_moje_akce_posts'] ) ) {
    $posts_count= intval( $_REQUEST['bulk_moje_akce_posts'] );
    printf( '<div id="message" class="updated fade">'.
      _n( 'Zkotrolováno %s článků.',
        'Zkotrolováno %s článků.',
        $posts_count ,
        'moje_akce'
      ) . '</div>', $posts_count );
  }
}
Myslím, že toto vylepšení bude mít velké použití, pro zjednodušení práce s větším množství obsahu.

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

4 Comments

      1. Petr

        Šlo by nějak, aby při zvolení mé hromadné akce (Hromadná odpověď) se napřed zobrazila textarea s tlačítkem na odeslat. Já jen vyplnil text odpovědi a odeslal hromadnou odpověď, na vybrané komentáře.
        Nejlépe okno s možností základního formování textu, jako je okno při kliknutí na „Odpovědět“.

        Odpověď

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *