Treci la conținutul principal
  Marți, 14 ianuarie 2020
  6 Răspunsuri
  2.8K vizite
  Abonati-va
Bună,

este compatibil cu spațiile digitale și alte like -uri S3?

Și este compatibil cu constructorul UX Flatsome

!
A
acum 5 ani
Bună,

Vă mulțumim că ne-ați contactat aici în legătură cu această extensie.

Este compatibil cu spațiile digitale și alte like -uri S3?

Încă nu am susținut Digital Ocean, puteți utiliza Amazon S3 în prezent: Pentru mai multe detalii:

https://www.joomunited.com/wordpress-products/wp-media-folder/amazon-s3-integration-with-wordpress-media-library

Și este compatibil cu constructorul UX plat

Da, este compatibil cu aproape constructor de pagini.

Sper că ajută!
Noroc,
W
acum 5 ani
Bună,

mulțumesc pentru răspuns.

La fel ca și S3 compatibil, poate funcționează cu datele de acreditare și adresa serverului, nu?:) Ai încercat -o?
A
acum 5 ani
Bună,

Vă mulțumesc că mi-ați revenit cu mai multe informații.

La fel ca și S3 compatibil, poate funcționează cu datele de acreditare și adresa serverului, nu?:) Ai încercat -o?


Nu am testat cu DO și cred că nu este posibil.

Noroc,
R
acum 4 ani
Îl puteți folosi cu DigitalOcean, există un hack simplu pentru a -l face să funcționeze:

DigitalOcean.png

Deoarece am făcut -o doar pentru un client, voi detalia hack -ul și apoi voi explica cum îl veți face să funcționeze separat.

--

Deși încă nu am lucrat 100%, am făcut progrese semnificative:

1. Hack

DigitalOcean Spaces este construit în jurul API -ului S3 și utilizează Biblioteca PHP „AWS SDK” Amazon (care este bundleD cu pluginul).

În descoperirea acestui lucru, m -am gândit că de atunci DigitalOcean promovează utilizarea SDK cu propriul său produs, hacking -ul o parte din cod pentru a -l face să funcționeze nu ar fi prea dificil.

Pentru a face acest lucru, am descoperit că modul în care funcționează pluginul este cu două fișiere de clasă (pentru fiecare serviciu) -
./class/wpmfAddonAws3Admin.php
&
./class/wpmfAws3.php
(pentru S3).

Fișierul „admin” este locul în care se află funcționalitatea front-end; Celălalt este pentru interfațarea cu S3 SDK. Pe scurt, fișierul „admin” este încărcat prin AJAX sau WP Front-end, iar funcționalitatea sa invocă fișierul S3 (folosind acreditări stocate), permițându-i să efectueze acțiuni (cum ar fi sincronizarea) cu găleata S3. Acest lucru funcționează foarte bine, dar există o problemă majoră în a face ca acesta să funcționeze cu DigitalOcean:

Endpoint.png

DigitalOcean este NU Regiunea agnostică. Aceasta înseamnă că fiecare solicitare este obținută către o anumită regiune, în timp ce S3 nu este. Aceasta nu este o problemă în sine (hack -ul nostru va funcționa în continuare), dar dacă doriți să atingeți funcționalitatea „completă” (diferite regiuni/găleți), trebuie să vă asigurați că va trebui să invocați clasa „non -admin” cu setări de acreditare personalizate de fiecare dată.

-

Hack -ul este format din următoarele:

a) Schimbați fișierul „admin” pentru a utiliza „Endpoint” pentru regiunea spații digitalocean
b) Asigurați-vă că regiunea „SUA-East-1” este stabilită în permanență
c) Schimbați „URL -ul de atașament” pentru fiecare dintre atașamentele sincronizate din biblioteca media

-

Primul pas este modificarea opțiunilor „implicite” din fișierul „admin”:

admin.png

Începând de la linia 34 din
./class/wpmfAddonAws3Admin.php
, veți vedea că un set de setări implicite sunt create pentru cealaltă clasă. Trebuie să faceți următoarele:


  • Schimbați „regiunea” în „SUA-Est-1”
  • Adăugați linia
    "endpoint" => "https://[[REGION]].digitaloceanspaces.com"



În cazul de mai sus, „regiunea” noastră este AMS3. Acest lucru poate fi diferit în funcție de locația în care este păstrat spațiul dvs.

Schimbarea acestui cod nu face foarte mult, ci se asigură că aceleași valorile implicite sunt utilizate de fiecare dată (și că este setat „punctul final”, care este baza întregului hack).

-

După ce am făcut acest lucru, ne întoarcem apoi la celălalt fișier de clasă
./class/wpmfAws3.php
:

Clasa.png

Acest lucru, după cum am menționat, este invocat de fiecare dată când clasa „Admin” dorește să comunice cu S3/DO.

Ceea ce vom face aici este „spoof” punctul final, ceea ce înseamnă că îl codificăm greu. Acest lucru va schimba adresa URL la care SDK -ul AWS trimite cereri, ceea ce înseamnă că ar trebui acceptate acreditările noastre digitale. Pentru a face acest lucru, adăugați pur și simplu următoarele două linii la linia 73 și respectiv 74:

#73 $ args ['regiune'] = 'us-east-1';
#74 $ args ['Endpoint'] = 'https://ams3.digitaloceansspaces.com';

Cele de mai sus vor forța „punctul final” să fie schimbat de fiecare dată când utilizați oricare dintre funcționalitățile „admin”.

Funcționează luând detaliile de mai sus și îmbinându -le cu acreditările S3 stocate (în cazul dvs., Cheia API DigitalOcean), permițând scenariului să comunice cu DO. Am descris mai sus că acest lucru este limitat, deoarece înseamnă că sunteți capabil să comunicați doar cu o singură regiune DO (ceva pe care îl voi aborda complet într -un minut).

-

După ce am făcut acest lucru, ultimul lucru pe care trebuie să -l facem este să schimbăm „URL -ul” pentru fiecare dintre atașamentele sincronizate cu DO.

Acest lucru se face în clasa „Admin”, în funcțiile „WPGETATTACHMENTURL” (#2048) și „AddMetainfo” (#1121):

1121.png

2048.png

Nu sunt sigur care dintre aceste funcții oferă de fapt funcționalitatea (cred că este #2048), dar le -am schimbat pe amândouă.

În cele din urmă, tot ce faceți este să schimbați linkul AWS la unul digital. Cel care a funcționat bine pentru acest hack a fost următorul:

#2057 Return 'https: //'. $ Infos ['găleată']. '.ams3.digitaloceansspaces.com/'. str_replace ('', '%20', $ Infos ['cheie']);

Acest lucru schimbă „legătura” pe care o are media WP în spațiile digitaleene, care ar trebui să o arate în backend -ul și frontendul site -ului dvs.

--

Voi detalia soluția mai largă într -o altă postare.
R
acum 4 ani
2. "Deplin"

După cum am menționat mai sus, soluția „completă” depinde de modul în care DigitalOcean interferează cu AWS SDK.

În termeni simpli, S3 vă permite să vă „conectați” și apoi să alegeți o găleată în orice regiune; DigitalOcean vă permite doar să vă conectați și să interacționați cu un singur regiune de fiecare dată.

Dacă doriți să obțineți funcționalitatea completă a pluginului (cu digitalOcean), există o mulțime de personalizare care trebuie să se întâmple în clasa „Admin”. Practic, trebuie să vă asigurați că fiecare solicitare este obținută la punctul final corect, care consumă atât timp, cât și destul de scump (în ceea ce privește conexiunile API).

-

Am „un fel” să funcționeze, deși vag. Scriu aici ca mijloc de a împărtăși progresul și poate altcineva ar prefera să -l ia sau ceva.

--

Trebuie să faceți 4 lucruri majore pentru ca acesta să funcționeze separat:

1. Creați un flux UI „digitalocean” separat
2. Eliminați orice referințe la S3 (înlocuirea cu DigitalOcean, după cum este necesar)
3. Schimbați fluxul anumitor caracteristici pentru a permite sprijinul încrucișat
4. Asigurați -vă că DO nu interferează cu S3

-

1. Pentru a adăuga o filă „digitalOcean” separat, trebuie să accesați pluginul original și să localizați fișierul „cloud.php” (./class/pages/settings/cloud.php):

<div id="do" class="tab-content">
    <div class="wpmf_width_100 p-tb-20 wpmf_left top_bar">
        <h1 class="wpmf_left"><?php esc_html_e('DigitalOcean', 'wpmf') ?></h1>
        <?php
        require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/submit_button.php';
        ?>
    </div>
    <div class="content-box content-wpmf-general">
        <?php
        // phpcs:ignore WordPress.Security.NonceVerification.Missing -- View request, no action
        if (isset($_POST['btn_wpmf_save'])) {
            ?>
            <div class="wpmf_width_100 top_bar saved_infos" style="padding: 20px 0">
                <?php
                require WP_MEDIA_FOLDER_PLUGIN_DIR . '/class/pages/settings/saved_info.php';
                ?>
            </div>
            <?php
        }
        ?>

        <div>
            <div class="wpmf_row_full">
                <?php
                if (is_plugin_active('wp-media-folder-addon/wp-media-folder-addon.php')) {
                    // phpcs:ignore WordPress.Security.EscapeOutput -- Content already escaped in the method
                    echo $html_tabdo;
                }
                ?>
            </div>
        </div>
    </div>
</div>


L -am adăugat doar după fila S3.

Pentru a -l face să funcționeze, aveți nevoie de variabila $ HTML_TABDO care să fie populată, ceea ce se face prin schimbarea a două fișiere.

Primul este ./class/pages/settings/wp-folder-options.php fișier (plugin principal/original):

S3.png

Al doilea este ./class/class-wp-folder-Option.php:

html_do.png

Aceasta va popula fila cu diferitele setări digitale.

-

2. Pentru a înlocui S3 cu DO, trebuie să vă asigurați că aveți un set complet diferit de fișiere și setări de coadă pentru a vă asigura că cele două sisteme nu vor intra în conflict.

Acest lucru necesită a face o serie de lucruri, crearea în principal a unui nou set de clase de „admin” și „conexiune”. Nu voi intra în adâncul modului de a face acest lucru, dar, practic, doriți să creați un nou set de clase care să creeze propriile setări de configurare și să le folosiți pe acestea pentru a se conecta la punctele finale pentru a face:

API_CODE.png

-

3. Sprijinul regiunii încrucișate.

Așa cum am menționat în postarea de mai sus, sistemul DO funcționează diferit la S3, prin faptul că fiecare cerere este obținută către o anumită regiune (S3 este regiunea agnostică).

Aceasta înseamnă că, dacă doriți să lucrați cu găleți/spații din alte regiuni, trebuie să lucrați ceva magie pentru a face ca totul să funcționeze împreună.

Mă descurc la timp, așa că nu voi acoperi totul aici, dar voi spune că, dacă doriți să funcționați sistemul, trebuie să editați fișierul „./class/wpmfdo.php” din backend - asigurându -vă că puteți trece „punctul final” pe care doriți să -l invocați instanța SDK pentru ...

Endpoint.png

Acest lucru ne oferă capacitatea de a defini diferite „puncte finale” („regiuni”;) pentru când trebuie să enumerați diferite spații etc.

Un bun exemplu în acest sens în acțiune este atunci când doriți să enumerați gălețile disponibile:

Regiune.png

Pentru a obține cele de mai sus, trebuie să parcurgeți toate regiunile disponibile în DO, apoi să creați o nouă serie de găleți disponibile. După cum veți aprecia, aceasta a fost o soluție complicată de creat:

BUCKETS_LIST.PNG

Acest lucru creează variabila $ list_buckets din diferite regiuni (nu doar cea cu care ați folosit pentru a vă conecta).

-

4. Nu am făcut acest lucru încă

Practic, trebuie să fiți capabil să faceți digitalocean cu S3, chiar și atunci când S3 este prezent.

Acest lucru va necesita ca funcționalitatea „sincronizare” să funcționeze și o serie de alte lucruri, pe care nu le -am completat încă.
Bună,

această caracteristică a fost implementată recent în plugin. Consultați detaliile de mai jos.:)

Noroc,
  • Pagina:
  • 1
Nu există încă răspunsuri pentru această postare.