Btw
Je winkelwagen

Je winkelwagen is leeg.

Recept: een zoekprovider aan de Addofy-zoekfunctie toevoegen

Doel: resultaten uit je eigen data verschijnen in de Addofy-zoekfunctie en de palette, in een eigen groep.

De provider

Een provider implementeert AddoBack\Modules\Search\SearchProviderInterface. Hij heeft vier methodes.

use AddoBack\Modules\Search\SearchProviderInterface;

final class Ticket_Search_Provider implements SearchProviderInterface {

	public function id(): string {
		return 'myplugin_ticket'; // Stable. Also the value of the "types" REST argument.
	}

	public function label(): string {
		return __( 'Tickets', 'myplugin' ); // Group heading.
	}

	public function available(): bool {
		return current_user_can( 'manage_options' ); // Who may search this provider at all.
	}

	public function search( string $query, int $limit ): array {
		$results = array();
		foreach ( myplugin_find_tickets( $query, $limit ) as $ticket ) {
			$results[] = array(
				'type'     => 'myplugin_ticket',
				'id'       => (string) $ticket->id,
				'title'    => $ticket->subject,
				'subtitle' => $ticket->customer,
				'url'      => admin_url( 'admin.php?page=myplugin&ticket=' . $ticket->id ),
				'badge'    => $ticket->status,
			);
		}
		return $results;
	}
}

Registreren

add_filter( 'adba_search_providers', static function ( array $providers ) {
	$providers[] = new Ticket_Search_Provider();
	return $providers;
} );

Regels om aan te houden

  • De provider bepaalt zelf wie hem mag doorzoeken, in available(). Addofy geeft geen toegang.
  • $query is al getrimd en bestaat uit minstens twee tekens.
  • Geef nooit meer dan $limit resultaten terug.
  • Exacte treffers, zoals een bestelnummer of een SKU, komen eerst.
  • Een resultaat heeft type, id, title, subtitle, url en badge. Een optionele tone kleurt de badge: neutral, info, success, warning of danger.

Optioneel: subfilters

Implementeer ook FilterableSearchProviderInterface om subfilters aan te bieden, zoals een status. Die voegt filters() toe (sleutel naar label en opties) en search_filtered( $query, $limit, $filters ). Een provider die alleen de basisinterface implementeert, blijft werken; hij heeft alleen geen subfilters.

Gerelateerd

Klaar om je AI te koppelen aan echte tools?

Start gratis proefperiode