Ich habe einen Anbieter-Marktplatz. Ich möchte nur Produkte anzeigen, die von einer bestimmten Autor-Benutzer-Rolle (Vendor) erstellt wurden.
Zur Verdeutlichung: Ich versuche nicht zu ändern, welche Benutzerrolle was sieht. Es wird nur versucht, Produkte anzuzeigen, die vom Anbieter erstellt wurden.
Ich habe festgestellt, dass Produkte ausblenden nur bestimmten Benutzerrollen im Woocommerce-Antwortcode zugewiesene Produkte anzeigen
Aber welchen Teil des Codes würde ich ändern, um die Benutzerrolle „Autor“ hinzuzufügen? Irgendein Rat?
Um nur Produkte anzuzeigen, die auf Benutzerrollen basieren, können Sie die verwenden woocommerce_product_query
Aktionshaken
In meiner Antwort verwende ich die get_users()
WordPress-Funktion, um eine Liste von Benutzern abzurufen, die bestimmten Kriterien entsprechen.
Sobald alle IDs, die zu Benutzerrollen gehören, erhalten wurden, können wir verwenden author__in
um Beiträge anzuzeigen, die mit bestimmten Autoren verknüpft sind
Sie erhalten also:
// Change the shop query
function action_woocommerce_product_query( $q, $query ) {
// NOT on backend
if ( is_admin() ) return;
// Get IDs belonging to certain user roles - multiple roles can be added, separated by a comma
$ids = get_users( array( 'role__in' => array( 'subscriber', 'administrator', 'vendor' ), 'fields' => 'ID' ) );
// Show posts associated with certain author - use author id
$q->set( 'author__in', $ids );
}
add_action( 'woocommerce_product_query', 'action_woocommerce_product_query', 10, 2 );
Das aktuelle Beispiel ist die Verwendung von Produkt-Tags zum Filtern von Produkten. Erstellen Sie also ein Tag mit dem gleichen Namen wie die Rolle. Um alle Rollen zu finden, können Sie globale $wp_roles verwenden; $all_roles = $wp_roles->roles; und $all_roles ausgeben, um sie zu sehen.
– Martin Mirchev
17. Mai um 13:05 Uhr