2016-04-28 19 views
0

Ich möchte bestimmte Produktseiten von ausgeloggten Benutzern oder Benutzern mit einer bestimmten Rolle einschränken. Der einfachste Weg wäre wahrscheinlich, die Kategorie-ID der Produktseite zu überprüfen und current_user_can('') dann auf die Haupt-Shop-Seite umzuleiten.Produktseite mit der Produktkategorie 'x' einschränken WooCommerce

Allerdings weiß ich nicht wirklich wo ich anfangen soll .. Sollte ich eine Aktion auf init hinzufügen? Und wie überprüfe ich nach der aktuellen Seitenprodukt-ID?

Ich dachte, ich könnte ein paar Daten mit einem var_dump() bekommen, aber das ergab nichts. Ich tat dies:

add_action('init', 'get_all_post_meta'); 

function get_all_post_meta() { 
    //$meta = get_post_meta(get_the_ID()); 
    global $post; 
    var_dump('$post'); 
    $metavar = get_the_terms($post->ID); 
    var_dump('$metavar'); 

} 

Aber keine Ergebnisse in meiner Konsole.

Edit: Ich fand meine var_dump() war falsch, wie es sein sollte wie var_dump($post); Fortsetzung meiner Suche jetzt.

Antwort

0

Das ist meine Lösung bisher, jetzt muss ich herausfinden, wie man ein einzelnes Produkt anstelle von allen entfernen kann.

add_action('wp_head', 'get_all_post_meta', 1); 

function get_all_post_meta() { 

    global $post; 
    $banned_cid = array(8); 
    $current_cid = array(); 
    $metavar = get_the_terms($post->ID, 'product_cat'); 
    global $woocommerce; 
    $redirect_url = 'http://www.example.nl/'; 


    if(current_user_can('subscriber') || current_user_can('manage_options')){}else if(is_product()){ 
     foreach ($metavar as $term) { 
         $cat_id .= $term->term_id.','; 
         array_push($current_cid, $term->term_id); 
        } 
     var_dump($current_cid); 

     $c = array_intersect($banned_cid, $current_cid); 
      if (count($c) > 0) {  
       $woocommerce->cart->empty_cart(); 
       wp_redirect($redirect_url, 302); 
       exit; 
     } 
    } 
}