Totul a început cu aproximativ un an în urmă cu faptul că am vrut să adăugați un Uploader media pentru imaginea plugin meniu, dar din păcate, evitând în același timp duplicarea de fișier js din coaja de nimic WordPress ar putea fi făcut, și copiați codul nu a vrut sa, din cauza faptului că nevoia lui de a menține în timpul actualizării, și cu privire la acest scor. Dar, recent, am decis să revizuiască ceea ce sa schimbat, și asta e ceea ce a ieșit din ea.
Acum vom merge la panoul de administrare, și include un nou subiect, se pare că nu va diferi de la twentyfourteen. Apoi, creați un functions.php și citiți mai departe.
Adăugarea METABOX cu cod de ieșire HTML de imagini noastre
Înregistrează o funcție pentru admin_init eveniment:
Acum ne-am adăugat METABOX și nimic nu ar trebui să funcționeze pentru că funcția de apel invers pentru a apela încă, adăugați-l:
Acum puteți viziona, și asta e ceea ce ar trebui sa
Acum, adăugați codul HTML mai util în metabox'a, trebuie doar să adăugați o astfel de funcție:
Această funcție funcționează numai: primește id parametru și o afișează imaginea, în caz contrar emite un link normal, atunci când a făcut clic, noi numim downloader mass-media. Noi numim această funcție în metabox'e nostru:
Aici, de asemenea, să ia doar din informațiile post-meta pe _alt_thumbnail_id cheie și a trecut în funcția pe care afișează html. Meta date cu încă cheia, astfel încât administratorul va vedea doar un link rupt.
În această primă parte a perdele, va continua să js.
Conectarea fișierului js care va provoca downloader mass-media
Mai întâi, creați un director în rădăcina firelor în interiorul fișierului js care a pus alternative_image.admin.js. Adăugați funcția la evenimentul în care admin_enqueue_scripts și conectați fișierul nostru și un cuplu de fișiere din coaja:
În această funcție wp_localize_script nu poate afișa funcția familiară, dar trece doar parametrii de la php la js. Din parametrii înșiși au o matrice cu traduceri, este titlul de încărcător Windows Media la selectarea imaginii buton și setarea nonce. care primește un cod unic, care va fi trimis la cererea și care este ajax necesară pentru a preveni CSRF.
Și în fișierul js va fi aici următorul cod:
Există, de asemenea, nu e mare, toate „ușor și simplu» ™. Id-ul metabox'a nostru - alternative_image. în care se agață de clicurile din cadrul acesteia. Clică va fi de două: adăugarea și ștergerea imaginilor. Făcând clic pe Adăugați o imagine încărcătorul numit mass-media cu parametrii care sunt trecute prin wp_localize_script. După selectarea imaginii și apăsarea butonului, încărcătorul va determina selectați evenimentul la care am adăugat o funcție care prima imagine selectată (și pot exista mai multe cm. Parametrul multiplu) și determină funcția AltImageUpdate cu ID-ul bara de parametri id și imaginea selectată. Iar atunci când faceți clic pe imaginea este determinată de eliminarea aceleiași funcții, dar în loc de transfer de imagine id -1. Foarte aceeași funcție AltImageUpdate pur și simplu trimite o solicitare ajax, atunci vom procesa și introduce datele în METABOX noastre.
Acum este momentul pentru a vedea panoul de administrare la rezultatul. Când faceți clic pe link-ul din interiorul Uploader mass-media metabox'a va fi afișat, dar atunci când selectați imaginea, nu se întâmplă nimic. Și asta sa întâmplat ceva pe adăuga un eveniment Ajax în secțiunea următoare.
Salvați imaginea selectată
Rămâne pentru a salva imaginea id-ul selectat pe care îl trimitem prin cerere ajax.
Înarmat cu aceste cunoștințe, vom adăuga ultima funcție care va fi numit la ajax ID cerere și de a salva imaginea într-un post:
Dar toate bine, foarte, foarte simplu în această funcție. Id-ul ia postul și imaginea datelor transmise, verificați dacă utilizatorul curent poate fi editat de postul actual și verificați nonce. eliminați în continuare datele meta dacă ID-ul transmis este egal cu -1, actualizarea altfel meta tastate _alt_thumbnail_id transmise id-ul și punctul de imagine. La această salva și șterge imaginile de lucru deja, dacă totul merge bine, apelantul chemat metabox'e pentru a afișa codul HTML, și le transmite înapoi la codul concluzia js care este inserat în metabox'a de ieșire.
Asta e ceea ce se întâmplă în cele din urmă:
Pentru o ieșire de imagine convenabilă copie câteva funcții în cortexul:
Acum, în orice locație convenabilă în șablon din cadrul ciclului buclei. deducem
Ca un bonus de mai jos explică modul de a face același domeniu, dar cu posibilitatea de a selecta mai multe imagini.
Imagine pentru a atrage atenția asupra
Mesaj de navigare
Spune-mi unde puteți citi despre wp.media?
Despre wp.media pot fi citite în fișierul js în numele care este cuvântul de mass-media, ca o astfel de documentație nimeni nu a scris, pentru că foarte repede lucrurile se schimbă.
Ea nu funcționează, toate făcut după cum este scris ((
Ce anume nu funcționează? A se vedea consola, jurnalele php. În altă zi, voi pune o versiune de lucru a fișierului, dacă nu uitați)
Salutări, găsit postarea. Acum, eu sunt stăpânirea WP și de a face exact ceea ce este descris in articol. Există o problemă - nu este numit downloader mass-media. Deși scriptul /js/alternative_image.admin.js podkgruzilsya. Eu încă nu funcționează de tema, și plugin-ul.
Funcția PHP pentru a conecta js-script:
Funcția inmtoo_realt_admin_enqueue_scripts_action ($ cârlig) $ post la nivel mondial;
// verifica dacă este o pagină postare de editare și nu orice altă pagină de admin
dacă (
($ Hook == 'post-new.php' || 'post.php' $ cârlig ==)
$ Post-> post_type == 'realty_residental'
)
// scripturi bibliotecă media de încărcare
wp_enqueue_media ();
wp_enqueue_style ( 'redactor-butoane');
// încărcați fișierul nostru js
wp_enqueue_script (
„Alternativa-imagine“,
plugin_dir_url (__FILE__). '/js/alternative_image.admin.js',
array ( 'jquery')
);
// adaugă variabile la fișierul nostru js
wp_localize_script (
„Alternativa-imagine“,
'Inmtoo_Realty',
array (
'L10n' => array (
'UploaderTitle' => __ ( 'Set imagine alternativă', 'Inmtoo_Realty'),
'UploaderButton' => __ ( 'Selectați imaginea', 'Inmtoo_Realty'),
)
'Nonce' => wp_create_nonce ( 'set_post_alternative_thumbnail_'. $ Post-> ID),
)
);
>
>
Și eu JS
(Funcția ($) $ (documentul) .ready (funcția () var AltImageUpdate = function (POST_ID, thumb_id) wp.media.post ( 'set_alternative_thumbnail', POST_ID: POST_ID,
thumbnail_id: thumb_id,
nonce: child_theme.nonce
>) .done (funcția (html) $ ( '# alternative_image') .find ( 'interior'.) .html (html);
>);
>;
$ ( '# Alternative_image')
.pe ( 'clic', '# set-post-alternativă-miniatură', funcția (e) e.preventDefault ();
e.stopPropagation ();
var uploader = wp.media (titlu: child_theme.l10n.uploaderTitle,
buton:
multiple: true
>);
uploader.on ( 'selectați', funcția () atașamente var = [];
. Uploader.state () get ( 'selectie') .forEach (funcția (i) attachments.push (i.id);
>);
AltImageUpdate (wp.media.view.settings.post.id, atașamente);
>);
uploader.open ();
>)
.pe ( 'clic', '# Remove-post-alternativă-miniatură', funcția (e) e.preventDefault ();
e.stopPropagation ();
AltImageUpdate (wp.media.view.settings.post.id, -1);
>);
>);
>) (JQuery);
Bună ziua, există suspiciuni că forma originală a script-ul nu poate lucra cu noua versiune a cortexului, mai ales eu nu au de lucru cu PE din acel moment. Pentru o privire start la consola js, pot exista erori au.
Adăugați pre-made temă, descărcați și să vedem ce nu a făcut.
Vă mulțumesc) văd descărcare)