Jak skrýt specifické objednávky pro uživatele v administraci

V případě, že se v administraci e-shopu pohybuje více lidí, musíte v ně mít důvěru, nebo jim omezovat to co vidí a mohou zobrazit. A do toho mohou patřit i specifické objednávky.

Uvažujme, že prodáváme například velmi specifické produkty, u nichž je příprava vychystání objednávky svěřena různým lidem. Takže uživatel A, se má věnovat objednávkám, v kterých je zboží, které má na starosti a ostatní nepotřebuje vidět.

Tento snippet jako takový neřeší označení objednávky pro určitého uživatele, protože to je mimo rámec tohoto článku. Pro představu, při vytvoření objednávky si někdo koupí vodní skůtr a vy do databáze zapíšete custom field, který označí, že tuto objednávku vyřizuje Karel. Ten by tak měl vidět jen své objednávky.

Pro testování si tedy k objednávce přidáme specifické post meta:

Když se Karel přihlásí do administrace, vidí všechny objednávky:

Pro omezení zobrazení, použijeme akci pre_get_posts:

if ( is_admin() ) {

	add_action('pre_get_posts', 'musilda_hide_orders' );
	function musilda_hide_orders( $query ) {

		$current_screen = get_current_screen();
		
		if ( 'edit-shop_order' == $current_screen->id ) {

			$user_id = get_current_user_id();

			if ( 1 == $user_id ) {

				$meta_query = $query->get( 'meta_query' );
				if ( is_array( $meta_query ) ) {
					$meta_query[] = array(
						'key'    =>'user_name',
						'value'  =>'Karel',
						'compare'=>'='
					);
				} else {
					$meta_query = array(
						array(
							'key'    =>'user_name',
							'value'  =>'Karel',
							'compare'=>'='
						)
					);
				}
				$query->set( 'meta_query', $meta_query );
				
			}
		
		}
		
		return $query;

	}

}

Nejprve si ověřím, že jde o adminsitraci, pak si ověříme, zda se nacházíme na výpisu objednávek, ověříme, že jde o správného uživatele a pak upravíme meta query.

Podmínky při úpravě meta query je nezbytná, protože meta query již může existovat a pak jej rozšiřujete.

Výsledek:

A Karel vidí jen jednu (svoji) objednávku.

Mimochodem, takto zjednodušeně fungují multi vendor pluginy.

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

Přidejte komentář

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