WP-DraftsForFriends

Popis

Tento plugin vygeneruje jedinečný odkaz, který můžete poslat kamarádovi, aby si mohl přečíst příspěvek ještě předtím, než jej zveřejníte. Odkaz funguje i pro uživatele, kteří nejsou přihlášeni a nemají účet; otevře se pouze ten konkrétní příspěvek, pro který byl vygenerován, a přestane fungovat sám od sebe, jakmile uplyne vámi nastavená doba.

Vše probíhá na stránce Příspěvky -> WP-DraftsForFriends: vyberte nezveřejněný příspěvek, zadejte, jak dlouho má odkaz platit, a zkopírujte odkaz, který se vám zobrazí. Níže uvedený seznam zobrazuje všechny vaše aktivní odkazy, dobu jejich platnosti a umožňuje vám je prodloužit nebo zrušit. Nastavení najdete na druhé záložce téže stránky.

Funkce „Sdílení“ využívá oprávnění publish_posts namísto manage_options: plugin určený ke sdílení vlastních konceptů nemá žádný důvod požadovat oprávnění, které by někomu umožňovalo měnit nastavení webu.

Upraveno podle „Drafts for Friends“, původní autor: Neville Longbottom. Ikona pluginu pochází od Freepik z Flaticon.

Funkce

  • Jedinečný 32znakový odkaz pro každý sdílený příspěvek, platný pouze pro příspěvek, ke kterému byl vydán
  • Doba platnosti, kterou si zvolíte v sekundách, minutách, hodinách nebo dnech, s výchozím nastavením, které zadáte jednou
  • Funguje i pro odhlášeného návštěvníka bez účtu
  • Sdílet lze jak naplánované a čekající příspěvky, tak i koncepty
  • Seřaditelný a stránkovaný seznam všech vašich odchozích odkazů s uvedením zbývající doby platnosti každého z nich
  • Hromadné prodloužení nebo zrušení odkazů
  • U sdíleného konceptu jsou komentáře povinně deaktivovány
  • Přesunutím příspěvku do koše dojde ke zrušení odkazů v něm obsažených; obnovením příspěvku se tyto odkazy znovu zobrazí
  • Kompatibilní s více weby, včetně aktivace v síti

Dary

Většinu svého volného času jsem věnoval tvorbě, aktualizaci, údržbě a podpoře těchto pluginů. Pokud se vám moje pluginy opravdu líbí a mohli byste mi věnovat pár dolarů, velmi bych to ocenil. Pokud ne, můžete je klidně používat bez jakýchkoli závazků.

Použití

Přejděte na Příspěvky -> WP-DraftsForFriends. Stránka obsahuje dvě záložky: Sdílené koncepty a Nastavení.

V části Sdílet koncept vyberte nezveřejněný příspěvek, nastavte dobu platnosti odkazu a klikněte na Sdílet koncept. Odkaz se zobrazí v seznamu níže; kliknutím na Kopírovat odkaz jej zkopírujte do schránky a pošlete ho komukoli, kdo jej potřebuje.

Seznam zobrazuje všechny vaše odchozí odkazy. Platnost končí za se odpočítává a poté se zobrazí Vypršela platnost. Najednou se zobrazuje dvacet řádků, všechny sloupce kromě sloupce s odkazy lze seřadit a pomocí Možnosti obrazovky můžete změnit počet zobrazených řádků.

Chcete-li prodloužit platnost odkazů, nastavte Prodloužit o na dobu, o kterou chcete platnost prodloužit, zaškrtněte příslušné řádky, vyberte Prodloužit vybrané a stiskněte Použít. Chcete-li je zrušit, zaškrtněte řádky a vyberte Zrušit vybrané. V obou případech se jedná o hromadné akce, nikoli o odkazy v jednotlivých řádcích, a to záměrně: odkaz je GET, a prohlížeč nebo nástroj pro kontrolu odkazů, který by jej tiše přednačítal, by zrušil veškeré sdílení na stránce, než byste si toho vůbec všimli.

Na záložce Nastavení se nastavuje doba, po kterou bude nové sdílení platné. Jedná se pouze o výchozí hodnotu — jak formulář sdílení, tak Prodloužit o lze pro jednotlivé sdílení změnit, aniž by se změnilo toto nastavení. Tato záložka využívá manage_options, takže autor vidí záložku Sdílené koncepty a nikoli záložku Nastavení.

Každý, kdo má oprávnění edit_others_posts – tedy správci a redaktoři – vidí všechny sdílené koncepty na webu a může sdílet jakýkoli nezveřejněný příspěvek. Autoři a přispěvatelé vidí pouze své vlastní příspěvky a mohou sdílet pouze ty, které mají oprávnění upravovat.

WP-CLI

wp draftsforfriends list --user=admin
wp draftsforfriends create 42 --user=admin
wp draftsforfriends create 42 --expires=14 --measure=d --user=admin
wp draftsforfriends extend 3 4 5 --expires=1 --measure=d --user=admin
wp draftsforfriends revoke 3 --yes --user=admin
create prints the share link on a line of its own before its success message, and `list` prints one per row. **A share link is the credential** — whoever holds it reads the unpublished post until the link expires, with no account and no login — so treat the output of both as you would the drafts themselves. Shell history, a CI log and a captured `stdout` are all places those links now live.

Pass --user. WP-CLI běží jako „nobody“, pokud není stanoveno jinak, a každý z těchto příkazů má přesně stejný rozsah, jak je zobrazeno na obrazovce: sdílení patří tomu, kdo jej vytvořil, kdokoli s oprávněním edit_others_posts je vidí všechny a při vytváření, rozšiřování nebo zrušení sdílení se ověřuje, zda můžete upravovat příspěvek, na který odkazuje. Při spuštění jako uživatel „nobody“ příkaz list nevrátí žádný výstup a ostatní příkazy jsou odmítnuty.

--expires and `--measure` default to the duration on the **Settings** tab, the same value the share form and **Extend by** start on. `extend` and `revoke` take as many ids as you like, exactly as the bulk actions do. `revoke` asks before it acts, because the link stops working immediately and cannot be restored; `--yes` answers for a script.

Pro tato nastavení neexistuje žádný podpříkaz – jedná se o jeden řádek s volbami, který wp option get wp_draftsforfriends_options již načítá.

Filtry

wp_draftsforfriends_capability decides who may reach each tab. The context is `shares` for the Shared Drafts tab or `settings` for the Settings tab:
add_filter( 'wp_draftsforfriends_capability', function ( $capability, $context ) {
    return 'settings' === $context ? 'manage_options' : 'edit_posts';
}, 10, 2 );
wp_draftsforfriends_share_url filters the link a friend is given, and
wp_draftsforfriends_requested_hash reads the hash back off the request. **They

tvoří jednu smlouvu.** Změňte formát odkazu, aniž byste plugin naučili
jej rozpoznat, a každý odkaz ke sdílení vyhodí chybu 404, přičemž na administračních obrazovkách
všechno vypadá v pořádku:

add_filter( 'wp_draftsforfriends_share_url', function ( $url, $share ) {
    return home_url( '/secret/' . $share->hash . '/' );
}, 10, 2 );

add_filter( 'wp_draftsforfriends_requested_hash', function ( $hash ) {
    if ( '' !== $hash ) {
        return $hash;
    }

    $path = isset( $_SERVER['REQUEST_URI'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : '';

    return preg_match( '#/secret/([A-Za-z0-9]+)/#', $path, $m ) ? $m[1] : '';
} );

Výchozí odkaz je ?p=<id> namísto trvalého odkazu na příspěvek, a nejedná se o
opomenutí: náhled funguje tak, že zachytí řádek, který WordPress načte na základě samotného
ID příspěvku, a před vykreslením jej vrátí zpět. Trvalý odkaz vyhledává příspěvek podle slugu
mezi veřejnými stavy, takže nezveřejněný příspěvek není vůbec nalezen.

Akcie

V průběhu životního cyklu sdíleného souboru se spustí tři procesy, přičemž každý z nich se spustí poté, co
dojde k úspěšnému zápisu:

  • wp_draftsforfriends_share_created — uložené sdílení a příspěvek, který je prostřednictvím něj sdílen.
  • wp_draftsforfriends_share_extended — aktuální stav sdílení a
    doba platnosti, kterou mělo dříve.
  • wp_draftsforfriends_share_revoked — sdílení tak, jak bylo; odkaz již
    přestal fungovat.
add_action( 'wp_draftsforfriends_share_created', function ( $share, $post ) {
    error_log( sprintf( 'Shared "%s" until %s', $post->post_title, $share->date_expired ) );
}, 10, 2 );

Snímky obrazovky

Instalace

  1. Nainstalujte a aktivujte plugin.
  2. Přejděte na WP-Admin -> Příspěvky -> WP-DraftsForFriends a sdílejte svůj první návrh.

Před spuštěním není třeba nic nastavovat. Sdílení vyžaduje oprávnění publish_posts namísto manage_options, takže každý autor může sdílet své vlastní koncepty, aniž by musel být jmenován správcem.

Nejčastější dotazy

Kam se poděla stránka „Drafts for Friends“?

Stále se nachází v sekci Příspěvky a nyní se jedná o jednu stránku se dvěma záložkami — Sdílené koncepty a Nastavení — namísto obrazovky, která neměla vlastní nastavení.

Adresa se změnila z edit.php?page=wp-draftsforfriends/wp-draftsforfriends.php na edit.php?page=wp-draftsforfriends, takže je třeba nahradit starou záložku. Stará adresa obsahovala název vlastní složky pluginu, což znamenalo, že se stránka přesunula, pokud jste někdy přejmenovali tuto složku.

Odkazy, které jste již poslali přátelům, zůstávají beze změny. Ty směřují přímo na samotný příspěvek a nikdy neprošly přes administrátorskou obrazovku.

Kam se z jednotlivých řádků ztratily možnosti „Rozšířit“ a „Odstranit“?

Nyní se jedná o hromadné akce, které se nacházejí nad i pod seznamem. Zaškrtněte požadované řádky, vyberte Prodloužit vybrané nebo Zrušit vybrané a stiskněte Použít. Funkce „Prodloužit“ použije dobu trvání uvedenou v poli Prodloužit o vedle rozevíracího seznamu.

Hromadná akce je prostý odkaz a stačí, aby prohlížeč tento odkaz přednačetl nebo aby ho zkontroloval nástroj pro kontrolu odkazů, a někdo na něj může neúmyslně kliknout. Zrušení nelze vrátit zpět a tiché prodloužení přístupu prodlužuje veřejný přístup k něčemu, co jste nezveřejnili, takže ani jedno z toho by nemělo být tímto způsobem dostupné.

Jeden kamarád říká, že se u toho odkazu zobrazuje hláška „Stránka nebyla nalezena“

Odkaz vypršel, byl zrušen nebo byl příspěvek přesunut do koše. Otevřete Příspěvky -> WP-DraftsForFriends a podívejte se na sloupec Vyprší za: u sdílení, jehož platnost vypršela, se zobrazí Vypršelo. Zaškrtněte tento řádek, nastavte Prodloužit o a vyberte Prodloužit vybrané — stejný odkaz začne opět fungovat. Obnovením příspěvku z koše se také obnoví funkčnost jeho odkazů.

Jakmile je příspěvek zveřejněn, odkaz přestane zobrazovat náhled a zobrazí se pouze zveřejněný příspěvek, který je v tu chvíli už stejně veřejně přístupný.

Kdo může vidět, které sdílené koncepty?

Každý, kdo má oprávnění edit_others_posts – tedy správci a redaktoři – vidí všechny sdílené koncepty na webu a může sdílet jakýkoli nezveřejněný příspěvek. Autoři a přispěvatelé vidí pouze své vlastní příspěvky a mohou sdílet pouze ty, které mají oprávnění upravovat.

Může můj kamarád k tomuto návrhu přidat komentář?

Ne. U sdíleného konceptu jsou komentáře automaticky zakázány.

Potřebuje ten kamarád účet?

Ne. V tom spočívá smysl tohoto pluginu: odkaz funguje pro návštěvníka, který není přihlášen, a to pouze pro konkrétní příspěvek, pro který byl vygenerován, a pouze do doby, než vyprší jeho platnost.

Vyžaduje tento web JavaScript?

Ne. Sdílení, rozšíření a zrušení jsou běžné odeslání formulářů zpracovávané na serveru, takže všechny tři funkce fungují i při vypnutém JavaScriptu. Skript pouze přidává tlačítko Kopírovat odkaz, zobrazuje varování před zrušením a zachycuje chybějící koncept nebo nesmyslnou dobu trvání před opětovným načtením stránky.

Recenze

3. 5. 2019
Very easy to use, and gives you the peace of mind of keeping users out of the dashboard
9. 5. 2017
If you offer a publishing service for your clients who don’t want to / need to know how to write their own posts, this is perfect. Well done!
3. 9. 2016
Great plugin! Love all of Lester’s plugins actually.
Přečtěte si všech 7 recenzí

Autoři

WP-DraftsForFriends je otevřený software. Následující lidé přispěli k vývoji tohoto pluginu.

Spolupracovníci

Plugin „WP-DraftsForFriends“ byl přeložen do 3 jazyků. Děkujeme všem překladatelům za jejich pomoc.

Přeložte “WP-DraftsForFriends” do svého jazyka.

Zajímá vás vývoj?

Prohledejte kód, podívejte se do SVN repozitáře, nebo se přihlaste k odběru protokolu vývoje pomocí RSS.

Přehled změn

2.0.0

  • AKTUÁLNÍ ZPRÁVA: Vyžaduje WordPress 6.8 a PHP 8.2, což představuje zvýšení požadavků oproti verzím 6.0 a 7.4.
  • AKTUÁLNÍ ZPRÁVA: Stránka byla přesunuta z edit.php?page=wp-draftsforfriends/wp-draftsforfriends.php na edit.php?page=wp-draftsforfriends, stále v sekci Příspěvky -> WP-DraftsForFriends, a nyní se jedná o jednu stránku se dvěma záložkami, Sdílené koncepty a Nastavení. Odkazy, které již byly odeslány přátelům, nejsou touto změnou ovlivněny.
  • AKTUÁLNÍ ZPRÁVA: Funkce „Rozšířit“ a „Odstranit“ již nejsou odkazy v jednotlivých řádcích. Jedná se o hromadné akce s názvy „Rozšířit vybrané“ a „Zrušit vybrané“, které se aplikují na řádky, které zaškrtnete. Akce na řádku představuje GET a stačí jeden prefetch k zrušení všech sdílení na stránce.
  • AKTUÁLNÍ ZPRÁVA: Byla odstraněna třída WPDraftsForFriends. Plugin nyní tvoří WP_DraftsForFriends plus WP_DraftsForFriends_Admin, _Install, _List_Table, _Options, _Preview, _Settings a _Shares v adresáři includes/.
  • AKTUÁLNÍ ZPRÁVA: Byl odstraněn koncový bod wp_ajax_draftsforfriends_admin. Každý zápis je nyní běžným odesláním formuláře s jednorázovým kódem na danou obrazovku.
  • AKTUÁLNÍ ZPRÁVA: Byly odstraněny argumenty dotazu dff_page, dff_sortby a dff_sortorder a nahrazeny jádrovými argumenty paged, orderby a order. Seřazená URL uložená v záložkách se již neřadí.
  • NOVINKA: Byla přidána záložka Nastavení pro výchozí dobu sdílení, která byla pevně nastavena na dvě hodiny.
  • NOVINKA: Nastavení se ukládají do jediného řádku wp_draftsforfriends_options a značky aktualizací do tabulky wp_draftsforfriends_version. Oba jsou při odinstalaci odstraněny, a to jak na jednotlivém webu, tak v rámci celé sítě, spolu s řádkem draftsforfriends_db_version z verzí starších než 2.0.0.
  • NOVINKA: Byl přidán filtr wp_draftsforfriends_capability, díky čemuž lze kteroukoli z těchto záložek přiřadit k jiné oprávnění. Na tento filtr reaguje také option_page_capability_wp_draftsforfriends_options, takže filtrované oprávnění pro nastavení řídí jak ukládání, tak i zobrazení obrazovky.
  • NOVINKA: Byly přidány akce wp_draftsforfriends_share_created, wp_draftsforfriends_share_extended a wp_draftsforfriends_share_revoked, z nichž každá se spustí po úspěšném zápisu.
  • NOVINKA: Přidán filtr wp_draftsforfriends_share_url a k němu patřící filtr wp_draftsforfriends_requested_hash. Odkaz, který dostane přítel, a kontrola, která mu umožní jej přečíst, nyní procházejí jedním kontraktem, takže web může přesunout odkazy pro sdílení do vlastního formátu. Filtrování pouze prvního z nich způsobí, že všechny odkazy vykazují chybu 404.
  • NOVINKA: Do každého řádku bylo přidáno tlačítko „Kopírovat odkaz“.
  • NOVINKA: Byla přidána možnost nastavení Počet sdílených konceptů na stránce.
  • NOVINKA: Příkaz WP-CLI wp draftsforfriendslist, create, extend a revoke, tedy čtyři funkce, které nabízí obrazovka. Vypíše odkazy pro sdílení, které představují přihlašovací údaje, a vyžaduje --user, protože všechny jeho akce se vztahují pouze na toho, kdo příkaz zadává.
  • NOVINKA: Byla přidána sada testů PHPUnit, měření pokrytí skriptu pomocí vitest a automatizované testování (CI) v rámci GitHub Actions.
  • ZMĚNA: Seznam sdílených konceptů je standardní tabulka seznamu v systému WordPress, která obsahuje sloupce s možností třídění, standardní stránkování po dvaceti řádcích a hromadné akce; nahrazuje tak přibližně 250 řádků ručně vytvořených odkazů na stránkování a záhlaví sloupců.
  • ZMĚNA: Zprávy jsou nyní základní administrátorská oznámení generovaná funkcí add_settings_error(), nikoli ručně vytvořený banner, který skript odkrýval.
  • ZMĚNA: Plugin nyní funguje i v případě, že je nainstalován v jiném adresáři než wp-draftsforfriends.
  • ZMĚNA: Byla odstraněna závislost na jQuery; skript je napsán v čistém JavaScriptu a nic na obrazovce není závislé na jeho spuštění.
  • ZMĚNA: Přesunutí sdíleného příspěvku do koše nyní zruší platnost odkazů v něm obsažených, namísto toho, aby zůstaly funkční. Obnovení příspěvku z koše zajistí, že odkazy budou opět funkční.
  • ZMĚNA: Plugin byl přebudován do adresáře includes/, kde každý soubor obsahuje jednu třídu.
  • ZMĚNA: Odstraněn odkaz img/receipt_share.png, který byl používán pouze v rámci administrátorského značkovacího kódu icon32, jehož podporu WordPress ukončil ve verzi 3.8.
  • OPRAVENO: Byla opravena chyba, kvůli které se sdílený koncept mohl zobrazovat na místech, kam nebyl sdílen. Jakmile byl otevřen jeden platný odkaz na náhled, byl tento příspěvek znovu použit pro každý následující dotaz v rámci téhož požadavku, který sám o sobě nevracel žádný výsledek, včetně požadavků obsahujících nesprávný, neplatný nebo smazaný odkaz.
  • OPRAVENO: Byla opravena chyba, kvůli které se název příspěvku na administrátorské obrazovce zobrazoval bez únikových znaků.
  • OPRAVENO: Byla opravena chyba, kdy se při rozbalování a mazání kontrolovala oprávnění k příspěvku uvedenému v požadavku, nikoli k tomu, na který sdílený koncept skutečně odkazuje.
  • OPRAVENO: Byla opravena fatální chyba při aktivaci a odinstalaci v režimu multisite, která volala funkci odstraněnou ve WordPressu 5.1.
  • OPRAVENO: Opravena chyba, kvůli které se při aktivaci a odinstalaci multisite přeskočily všechny weby po stém.
  • OPRAVENO: Byla opravena chyba, kvůli které nebyla tabulka sdílených konceptů zaregistrována v $wpdb->tables, takže její název byl nesprávný uvnitř funkce switch_to_blog().
  • OPRAVENO: Byla opravena chyba, kvůli které rozevírací seznamy jednotek trvání neměly popisek, což způsobovalo, že čtečky obrazovky je oznamovaly jako neoznačené rozevírací seznamy.
  • OPRAVENO: Opravena chyba, kvůli které počet položek nad seznamem zahrnoval sdílené příspěvky, jejichž původní příspěvek byl smazán a které se nikdy nezobrazily v seznamu. Trvalé smazání příspěvku nyní smaže i jeho sdílené koncepty.
  • OPRAVENO: Bylo opraveno, že jedenáct řetězců nebylo nikdy přeloženo kvůli překlepu v textové doméně.
  • OPRAVENO: Bylo opraveno několik varování v PHP 8.
  • OPRAVENO: Byla opravena chyba, kvůli které se nastavení obrazovky Počet sdílených konceptů na stránce po použití ignorovalo, takže se seznam vždy stránkoval po dvaceti položkách, bez ohledu na to, jakou hodnotu jste nastavili.
  • POZNÁMKA: Každý dotaz do databáze je nyní samostatným připraveným příkazem, ve kterém jsou všechny hodnoty vázány, včetně sloupce pro řazení, který prochází zástupným symbolem identifikátoru %i.