Cum pot adăuga un eveniment jQuery OnClick la butonul de Publicare articole?

11 ian. 2013, 20:45:54
Vizualizări: 4.36K
Voturi: 4

Doresc să adaug un eveniment simplu de confirmare la butonul de Publicare articole, astfel încât atunci când clientul meu apasă "Publică", acesta îl va întreba dacă este sigur, iar utilizatorul poate apăsa "Da" sau "Anulează", iar articolul va fi publicat sau nu.

Sunt nou în WordPress... sau cel puțin am făcut doar programare de teme și plugin-uri limitate. Am găsit codul metabox pentru butonul "Publică" în edit-form-advanced.php:

add_meta_box('submitdiv', __('Publică'), 'post_submit_meta_box', null, 'side', 'core');

Dar pentru a realiza acest lucru, bănuiesc că va trebui să adaug codul jQuery altundeva - preferabil în tema mea.

Din motive specifice site-ului, nu pot adăuga plugin-uri noi la această instalare, așa că orice modificări trebuie să fie limitate la fișierul functions.php al temei mele.

2
Comentarii

Numărul de plugin-uri pe care le folosește un site este irelevant, contează ce face fiecare plugin. Aceeași soluție adăugată direct în tema ta sau prin intermediul unui plugin pune o încărcare identică pe site-ul tău.

Milo Milo
11 ian. 2013 21:10:32

Da. Ei bine, nu sunt aici să dezbat punctele fine legate de câte plugin-uri fac ce, sunt doar interesat să obțin un răspuns la întrebarea mea într-un mod care să evite folosirea unui plugin pentru a-mi atinge scopul. Sunt de acord să adaug cod în tema acestui site... unul dintre sutele pe care le am în instalația mea multi-site.

Lynn Lynn
11 ian. 2013 21:56:15
Toate răspunsurile la întrebare 2
6

Puteți adăuga acțiuni în footer-ul postării (bazat pe acest răspuns, netestat):

add_action( 'admin_footer-post-new.php', 'wpse_80215_script' );
add_action( 'admin_footer-post.php', 'wpse_80215_script' );

function wpse_80215_script()
{
    if ( 'post' !== $GLOBALS['post_type'] )
        return;

    ?>
<script>
document.getElementById("publish").onclick = function() {
    if ( confirm( "Ești pregătit?" ) )
        return true;

        return false;

}</script>
    <?php
}

Aceste acțiuni sunt apelate în wp-admin/admin-footer.php:

do_action( "admin_footer-" . $GLOBALS['hook_suffix'] );

Acest cod poate fi utilizat într-un plugin (recomandat) sau în fișierul functions.php al temei.
Vezi și:

11 ian. 2013 20:57:15
Comentarii

Bun, deci am adăugat codul de mai sus în fișierul meu functions.php și nu s-a întâmplat nimic. Este corect să presupun că scriptul js ar trebui să fie în fișierul admin_footer? În acest caz, am încercat mai întâi codul adăugând întregul fragment de mai sus în functions.php...

Lynn Lynn
11 ian. 2013 23:02:31

Da, doar adaugă totul în functions.php. Am testat acum, funcționează.

fuxia fuxia
11 ian. 2013 23:06:48

de asemenea...un lucru care mă încurcă...nu văd niciun fișier în wp-admin numit admin_footer-post-new.php sau admin_footer-post.php. Doar admin-footer.php care pare a fi un fișier destul de simplu. Ar putea acest lucru să facă ca hook-urile mele să nu funcționeze?

Lynn Lynn
11 ian. 2013 23:25:25

@Lynn Vezi actualizarea mea.

fuxia fuxia
11 ian. 2013 23:29:33

Mulțumesc. Acum am văzut. Puneam totul în funcții. Și linkuri informative de asemenea.

Lynn Lynn
11 ian. 2013 23:40:25

Funcționează și am testat, din plăcere, ca un plugin. Mulțumesc pentru ajutor.

Lynn Lynn
12 ian. 2013 00:19:44
Arată celelalte 1 comentarii
1

Există un plugin WordPress pentru asta:

Confirm Publishing Actions este un plugin WordPress care cere utilizatorului să confirme (sau să anuleze) ori de câte ori încearcă să trimită, să publice, să actualizeze sau să șteargă un articol WordPress.

11 ian. 2013 20:49:57
Comentarii

Din păcate, mă aflu într-o poziție în care nu am voie să adaug un plugin la instalarea multi site. Suferă foarte mult din cauza creșterii excesive a plugin-urilor și nu este o opțiune.

Lynn Lynn
11 ian. 2013 20:55:29