Rozhodl jsem se opustit WP Remote službu, která je již delší dobu nevyvíjená a byť umí některé fantastické věci (např. update pluginu na serveru s ftpext variantou instalace WordPressu), nezvládne takové základní věci, jako je „dej mi seznam pluginů na serveru“ nebo „kde nemám tento plugin“. I přes pokusy s autory komunikovat a nabídku, že si zaplatím jejich dnes již nenabízenou placenou verzi, to nikam nevedlo.
Po delším průzkumu možností jsem se rozhodl pro plugin MainWP. Jako největší plus vidím možnost rozběhat si celou infrastrukturu správy WordPressu doma, netahat do toho cloud, a přístup ke zdrojákům, pokud mi něco nebude fungovat. Rozjetí je relativně triviální, byť CentOS, nginx, php-fpm apod. to mírně zkomplikují proti standardnímu předpokládanému prostředí.
Co je ale vážné issue, jsou nějaké vnitřní chyby v tomto pluginu, které efektivně brání přidání site na HTTPS. V přidávacím dialogu se sice nastaví správný protokol, ale uvnitř kódu se tato informace nějak ztratí a provede se volání po HTTP.
Bohužel všechny mé nginx instalace u SSL serverů provádí 301 redirect z HTTP na HTTPS, což sice curl použité uvnitř MainWP zvládne, ale bohužel změní přenosové schéma z POST na GET, s čímž nepočítá plugin.
Řešení je poměrně triviální (workaround), je třeba do class/class-mainwp-utility.php do funkce fetchUrl přidat nastavení
1 |
@curl_setopt( $ch, CURLOPT_POSTREDIR, 3 ); |
kteréžto zajistí, že curl nezmění přenosové schéma. Bylo by asi lepší odhalit tu chybu se zahozeným příznakem, ale to přenechávám autorům, kterým jdu hned zadat bugreport.