Cum să folosești un hook înainte de salvarea unui widget text în WordPress

22 ian. 2017, 04:44:17
Vizualizări: 1.41K
Voturi: 0

Vreau să știu care hook/acțiune este apelată chiar înainte ca conținutul și titlul Widget-ului Text să fie stocate în baza de date. Am căutat pe Google dar nu am reușit să găsesc numele hook-ului.

Ceea ce doresc este ca de fiecare dată când este apăsat butonul de salvare al unui widget text (în panoul de administrare), să aplic funcția mea personalizată de modificare a conținutului și să returnez conținutul actualizat pentru ca WordPress să îl salveze.

Notă importantă: Întrebarea mea nu este un duplicat al acestei întrebări, deoarece acea soluție se referă la un filtru, iar eu caut un hook sau acțiune. Poate fi o soluție, dar nu este optimă în cazul meu, deoarece ar fi consumator de timp.
De exemplu: Am 10 widget-uri text active în bara laterală și pentru fiecare încărcare de pagină, fiecare widget va apela widget_text. Așadar, caut o soluție mai bună.

Orice ajutor ar fi foarte apreciat.
Mulțumesc.

1
Comentarii

grrr te plângi despre răspuns înainte ca acesta să fie dat :((. În general, dacă ai nevoie de un comportament diferit, ar trebui să-ți scrii propriul "widget de text", deoarece există tot felul de hook-uri declanșate când un widget este salvat, dar este puțin probabil să fie ușor de utilizat.

Mark Kaplun Mark Kaplun
22 ian. 2017 04:54:26
Toate răspunsurile la întrebare 1
0

Nu sunteți sigur ce doriți aici, alte opțiuni ar putea fi posibile, dar există de exemplu acest hook:

/**
 * Filtrează setările unui widget înainte de salvarea lor.
 *
 * Returnarea valorii false va scurta efectiv capacitatea widget-ului
 * de a actualiza setările.
 *
 * @since 2.8.0
 *
 * @param array     $instance     Setările curente ale instanței widget-ului.
 * @param array     $new_instance Array cu noile setări ale widget-ului.
 * @param array     $old_instance Array cu vechile setări ale widget-ului.
 * @param WP_Widget $this         Instanța curentă a widget-ului.
 */
 $instance = apply_filters( 
    'widget_update_callback', 
    $instance, 
    $new_instance, 
    $old_instance, 
    $this 
);

Iată un exemplu despre cum putem ținti widget-urile de tip Text și modifica câmpul de intrare text atunci când acestea sunt actualizate:

add_filter( 'widget_update_callback', function( $instance, $new, $old, $obj )
{
    if( 'text' === $obj->id_base && ! empty( $instance['text'] ) )
    {
        // Avertisment: aceasta suprascrie textul introdus în instanța widget-ului:
        // $instance['text'] = 'text suprascris';
    }

    return $instance;
}, 10, 4 );
22 ian. 2017 10:12:31