jsou titulky uloženy kdekoli?
<p>co se týče mé předchozí <a href="https://wordpress.stackexchange.com/questions/1774/how-to-display-a-shortcode-caption-somewhere-other-than-the-content">otázky týkající se krátkých kódových titulků</a> , nezdá se mi, že skutečný text titulku je uložen kdekoli jinde než v příspěvku obsahu samotného kódu.</p><p>myslel bych, že <code>wp\_get\_attachment\_metadata</code> by uložilo informace pro přílohu, ale ne.</p><p>mýlím se? nebo wordpress neukládá skutečný titulek kdekoli?</p>
<p>ano, ukládá titulek na své vlastní místo v db. nemohu citovat přesné místo, ale v wordpressu, "přílohy" jsou poštou typu a ukládá každou přílohu, stejně jako příspěvek. pro typ přílohy přílohy zachází s popiskem obrázku jako <code>the\_excerpt</code> popis obrázku jako <code>the\_content</code> a s názvem obrázku jako ... <code>the\_title</code>.</p>
<p><em><strong>update</strong></em>: když jsem poprvé zaslal svou odpověď, zmeškal jsem podstatu otázky; moje odpověď byla o zabezpečení <code>.htaccess</code> obecně a nyní je uvedena pod dvojitou linií (podívejte se dolů, pokud vás to zajímá.) bohužel nemám specifické zkušenosti s zabezpečením <code>/wp-admin/</code> pomocí <code>.htaccess</code>, takže jednoduše uvedu dva zdroje, které budu sledovat kdy a jestli to potřebuji:</p><ul> <li> <a href="http://blogsecurity.net/wordpress/article-210607">vytvrzování wordpressu pomocí .htaccess</a> </li> <li> <a href="http://www.askapache.com/wordpress/htaccess-password-protect.html#comment">askapache ochrana heslem, pro wordpress</a> </li> </ul><p>první z nich doporučuje následující (a zde je <a href="http://wordpress.org/support/topic/codes-for-htaccess-in-wp-admin">nějaká diskuse o tom</a> .)</p><pre><code>&lt;files ~ "\.(php)$"&gt; authuserfile /etc/httpd/htpasswd authtype basic authname "restricted" order deny,allow deny from all require valid-user satisfy any &lt;/files&gt; </code></pre><p>ten má spoustu informací, zejména v komentářích, ale pokud vám poskytneme seznam ke čtení, není to odpověď, kterou jste hledali.</p><p>je mi líto, že jsem nemohl být na tomto místě užitečnější.</p><p></p><p>obvykle wordpress má pouze následující, které zpracovávaly zpracování permalinků a nesouvisí s bezpečností:</p><pre><code># begin wordpress &lt;ifmodule mod\_rewrite.c&gt; rewriteengine on rewritebase / rewriterule ^index\.php$ - [l] rewritecond %{request\_filename} !-f rewritecond %{request\_filename} !-d rewriterule . /index.php [l] &lt;/ifmodule&gt; # end wordpress </code></pre><p>nedávno jsem našel <a href="http://wordpress.org/extend/plugins/wp-htaccess-control/">wp htacess control</a> plugin, který spravuje spoustu <code>.htaccess</code> pro vás a já to mám moc rád. po úpravě nastavení přidala následující možnosti:</p><pre><code># wphtc: disable serversignature on generated error pages serversignature off # wphtc: disable directory browsing options all -indexes # wphtc: protect wp-config.php &lt;files wp-config.php&gt; order allow,deny deny from all &lt;/files&gt; # wphtc: protect .htaccess file &lt;files ~ "^.*\.([hh][tt][aa])"&gt; order allow,deny deny from all &lt;/files&gt; </code></pre><p>přidala také tyto možnosti, které se týkají výkonu místo zabezpečení:</p><pre><code># wphtc: setting mod\_gzip &lt;ifmodule mod\_gzip.c&gt; mod\_gzip\_on yes mod\_gzip\_dechunk yes mod\_gzip\_item\_include file \.(html?|txt|css|js|php|pl)$ mod\_gzip\_item\_include handler ^cgi-script$ mod\_gzip\_item\_include mime ^text/.* mod\_gzip\_item\_include mime ^application/x-javascript.* mod\_gzip\_item\_exclude mime ^image/.* mod\_gzip\_item\_exclude rspheader ^content-encoding:.*gzip.* &lt;/ifmodule&gt; # wphtc: setting mod\_deflate &lt;ifmodule mod\_deflate.c&gt; addoutputfilterbytype deflate text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript browsermatch ^mozilla/4 gzip-only-text/html browsermatch ^mozilla/4.0[678] no-gzip browsermatch bmsie !no-gzip !gzip-only-text/html header append vary user-agent env=!dont-vary &lt;/ifmodule&gt; </code></pre><p>kromě toho jsou některé pluginy, které jsem se nesnažil, ale které jsou zaměřeny na zabezpečení a které pracují s <code>.htaccess</code> - můžete je zkusit každý, abyste viděli, co dělají v souboru <code>.htaccess</code>:</p><ul> <li> <a href="http://wordpress.org/extend/plugins/wp-super-secure-and-fast-htaccess/">wp super bezpečný a rychlý htaccess</a> ( <a href="http://www.andreapernici.com/wordpress/wp-super-secure-and-fast-htaccess/">také</a> )</li> <li> <a href="http://wordpress.org/extend/plugins/bulletproof-security/">bulletproof zabezpečení</a> </li> <li> <a href="http://wordpress.org/extend/plugins/silence-is-golden-guard/">ticho je zlatá stráž</a> </li> <li> <a href="http://wordpress.org/extend/plugins/wp-blockyou/">wp-blockyou</a> </li> <li> <a href="http://wordpress.org/extend/plugins/stealth-login/screenshots/">stealth přihlášení</a> </li> <li> <a href="http://wordpress.org/extend/plugins/http-authentication/">ověření http</a> </li> <li> <a href="http://wordpress.org/extend/plugins/askapache-password-protect/">askapache password protect</a> </li> </ul><p>kromě toho, pokud chcete znát (imo) # 1 expert zdroj na <a href="http://www.askapache.com/search/wordpress+security/">zabezpečení apache související s wordpress</a> můžete najít na <a href="http://www.askapache.com/">askapache.com</a> ; vole je hardcore! jeho blog nevyřeší váš problém "<em>příliš mnoho informací</em>", ale alespoň ho můžete zobrazit jako autoritativní zdroj!</p><p>zde jsou některé příklady (i když ne všechny jsou přímo související s wordpressem)</p><ul> <li> <a href="http://www.askapache.com/wordpress/advanced-wp-config-php-tweaks.html">pokročilé aplikace wordpress wp-config.php tweak</a> </li> <li> <a href="http://www.askapache.com/security/wordpress-plugin-for-apache-htaccess-security.html#menu0-el1">příklad .htaccess pro wordpress</a> </li> <li> <a href="http://www.askapache.com/wordpress/wordpress-404.html">pokročilá aplikace wordpress 404</a> </li> <li> <a href="http://www.askapache.com/htaccess/mod\_security-htaccess-tricks.html">mod\_security .htaccess triky</a> </li> <li> <a href="http://www.askapache.com/htaccess/htaccess-plugin-blocks-spam-hackers-and-password-protects-blog.html">plugin bloků .htaccess blok spamu, hackerů a hesel</a> </li> </ul><p>každopádně doufám, že to pomůže.</p> <p>největší wordpress giveaways jsou mezi <code>&lt;head&gt; &lt;/head&gt;</code> tagy.</p><p><strong> příklad výstupu obsahu wordpressu podle tématu twentyten a jak odstranit: </strong></p><pre><code>&lt;link rel="profile" href="http://gmpg.org/xfn/11" /&gt; </code></pre><p>odebrat přímo z header.php</p><pre><code> &lt;link rel="stylesheet" type="text/css" media="all" href="http://example.com/wp-content/themes/twentyten/style.css" /&gt; </code></pre><p>skrýt wordpress voláním šablony stylů z jiného umístění a změňte adresář wp-content. wordpress vyžaduje, aby vaše téma obsahovalo některé základní informace v horní části stylu style.css (style.css musí být v kořenovém adresáři motivů). budete muset vytvořit alternativní css a zavolat z hlavy. wordpress nevyžaduje, abyste používali motivy style.css, pouze to vyžaduje, aby byl v adresáři motivů.</p><p>odebrat přímo z header.php</p><pre><code>&lt;link rel="alternate" type="application/rss+xml" title="example blog &amp;raquo; feed" href="http://example.com/feed/" /&gt; &lt;link rel="alternate" type="application/rss+xml" title="example blog &amp;raquo; comments feed" href="http://example.com/comments/feed/" /&gt; &lt;link rel="edituri" type="application/rsd+xml" title="rsd" href="http://example.com/xmlrpc.php?rsd" /&gt; &lt;link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.com/wp-includes/wlwmanifest.xml" /&gt; &lt;link rel='index' title='example blog' href='http://example.com/' /&gt; &lt;meta name="generator" content="wordpress 3.1-alpha" /&gt; </code></pre><p>chcete-li tyto dodatečné odkazy odebrat, můžete přidat filtr do funkcí .php</p><pre><code>// remove junk from head remove\_action('wp\_head', 'rsd\_link'); remove\_action('wp\_head', 'wp\_generator'); remove\_action('wp\_head', 'feed\_links', 2); remove\_action('wp\_head', 'index\_rel\_link'); remove\_action('wp\_head', 'wlwmanifest\_link'); remove\_action('wp\_head', 'feed\_links\_extra', 3); remove\_action('wp\_head', 'start\_post\_rel\_link', 10, 0); remove\_action('wp\_head', 'parent\_post\_rel\_link', 10, 0); remove\_action('wp\_head', 'adjacent\_posts\_rel\_link', 10, 0); </code></pre><p>můžete změnit svůj adresář pluginů a adresář wp-content ve vašem souboru wp-config.php, ale můžete mít nějaké problémy, pokud váš motiv nebo pluginy nepoužívají správnou metodu pro volání souborů.</p><pre><code>define( 'wp\_content\_dir', $\_server['document\_root'] . '/new-wp-content' ); </code></pre><p>nastavte wp\_content\_url na úplný identifikátor uri tohoto adresáře (bez koncového lomítka), např.</p><pre><code>define( 'wp\_content\_url', 'http://example/new-wp-content'); </code></pre><p>volitelné nastavte wp\_plugin\_dir na úplnou místní cestu tohoto adresáře (bez koncového lomítka), např.</p><pre><code>define( 'wp\_plugin\_dir', $\_server['document\_root'] . '/new-wp-content/new-plugins' ); </code></pre><p>nastavte wp\_plugin\_url na úplný identifikátor uri tohoto adresáře (bez koncového lomítka), např.</p><pre><code>define( 'wp\_plugin\_url', 'http://example/new-wp-content/new-plugins'); </code></pre><p><strong>pluginy</strong></p><p>uvědomte si, že některé pluginy jako akismat, all in one seo, w3-total-cache, super cache a mnoho dalších přidávají komentáře k výstupu html. většina z nich lze snadno upravit, aby se odstranily komentáře, ale vaše změny budou přepsány kdykoliv aktualizací pluginů.</p><p><strong> wp-includes </strong></p><p>adresář wp-includes uchovává jquery a různé další soubory js, které témata nebo pluginy budou volat pomocí wp\_enqueue\_script (). chcete-li to změnit, musíte zrušit registraci výchozích skriptů aplikace wordpress a zaregistrovat nové umístění. přidat do funkcí.php:</p><pre><code>function my\_init() { if (!is\_admin()) { // comment out the next two lines to load the local copy of jquery wp\_deregister\_script('jquery'); wp\_register\_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', false, '1.3.2'); wp\_enqueue\_script('jquery'); } } add\_action('init', 'my\_init'); </code></pre><p>to bude nutné provést s každým skriptem používaným vaším motivem nebo zásuvnými moduly.</p> <p>pokud se dostáváte do bodu, kdy kód ve vašem <code>functions.php</code> tématu začíná přemoci vás, určitě bych řekl, že jste připraveni zvážit rozdělení do několika souborů. v tomto bodě mám sklon dělat to téměř druhou povahou.</p><h3>použít zahrnout soubory do souboru <code>functions.php</code> soubor</h3><p>vytvořím podadresář nazvaný<em> "zahrnuje" </em>pod mým adresářem motivů a segmentuji můj kód do souborů organizovaných podle toho, co mi v té době dává smysl (což znamená, že jsem neustále refactoring a pohybující se kód kolem webu se vyvíjí. ) také zřídka v reálném kódu v <code>functions.php</code>; vše jde v souborech zahrnujících; jen moje preference.</p><p>jen abych vám dal příklad zde je moje zkušební instalace, kterou používám k testování svých odpovědí na otázky zde na wordpress odpovědi. pokaždé, když odpovím na otázku, mám kód v případě, že ji potřebuji znovu. to není přesně to, co budete dělat pro živé stránky, ale ukazuje mechaniku rozdělení kódu:</p><pre><code>&lt;?php /* * functions.php * */ require\_once( \_\_dir\_\_ . '/includes/null-meta-compare.php'); require\_once( \_\_dir\_\_ . '/includes/older-examples.php'); require\_once( \_\_dir\_\_ . '/includes/wp-admin-menu-classes.php'); require\_once( \_\_dir\_\_ . '/includes/admin-menu-function-examples.php'); // wa: adding a taxonomy filter to admin list for a custom post type? // http://wordpress.stackexchange.com/questions/578/ require\_once( \_\_dir\_\_ . '/includes/cpt-filtering-in-admin.php'); require\_once( \_\_dir\_\_ . '/includes/category-fields.php'); require\_once( \_\_dir\_\_ . '/includes/post-list-shortcode.php'); require\_once( \_\_dir\_\_ . '/includes/car-type-urls.php'); require\_once( \_\_dir\_\_ . '/includes/buffer-all.php'); require\_once( \_\_dir\_\_ . '/includes/get-page-selector.php'); // http://wordpress.stackexchange.com/questions/907/ require\_once( \_\_dir\_\_ . '/includes/top-5-posts-per-category.php'); // http://wordpress.stackexchange.com/questions/951/ require\_once( \_\_dir\_\_ . '/includes/alternate-category-metabox.php'); // http://lists.automattic.com/pipermail/wp-hackers/2010-august/034384.html require\_once( \_\_dir\_\_ . '/includes/remove-status.php'); // http://wordpress.stackexchange.com/questions/1027/removing-the-your-backup-folder-might-be-visible-to-the-public-message-generate require\_once( \_\_dir\_\_ . '/includes/301-redirects.php'); </code></pre><h3>nebo vytvořit moduly</h3><p>další možností je začít seskupovat kód podle funkce a vytvořit si vlastní pluginy. pro mě začnu kódování v souboru <code>functions.php</code> a v době, kdy dostanu kód, jsem přesunul většinu kódu do pluginů.</p><h3>nicméně žádná významná výkonnost pochází z php kódové organizace</h3><p>na druhou stranu strukturování souborů php je 99% o vytvoření objednávky a udržovatelnosti a 1% o výkonu, pokud (organizování souborů <code>.js</code> a <code>.css</code>, které prohlížeč přes http volá, je zcela odlišný případ a má obrovský rozsah ale jak si organizujete svůj php kód na serveru do značné míry z hlediska výkonu nezáleží.</p><h3>organizace code je osobní preferencí</h3><p>a v neposlední řadě organizace kódu je osobní preference. někteří lidé by nenáviděli, jak organizuji kód, stejně jako bych mohl nenávidět, jak to taky dělají. najděte si něco, co se vám líbí a držte se ho, ale dovolte, aby se vaše strategie v průběhu času vyvíjela, abyste se s ní dozvěděli více a lépe se s ní spokojili.</p> <p>vytvořil jsem plugin, který dělá něco podobného (tzv. multisite post display <a href="https://wordpress.org/plugins/multisite-post-reader/">https://wordpress.org/plugins/multisite-post-reader/</a> ). zobrazuje příspěvky ze všech podstránek.</p><p>kód tam může být užitečný pro to, co děláte. jste vítáni kopat do něj a používat kód pomoci s vaším projektem. (koneckonců jsem použil útržky kódů jiných lidí, abych to vytvořil.)</p><p>napsal jsem to poté, co jsem udělal multisite media display, protože jsem chtěl způsob, jak zobrazit média z podřízených stránek na jedné stránce, a nemohl jsem najít žádný plugin, který by to dělal. oba programy byly užitečné pro sledování odeslaných médií a obsahu z mého multisite.</p><p>volný, open source, a to vše. doufám, že je to užitečné.</p> Skryté soubory? <p>používám mnohem rychlejší a jednodušší způsob, jak vytvořit lokální kopii kodexu bez instalace lokálního serveru a bez instalace kopie mediawiki, nazvané <a href="https://addons.mozilla.org/en-us/firefox/addon/scrapbook/">scrapbook</a> což je rozšíření firefoxu, které vám pomůže ukládat webové stránky a spravovat sbírka. klíčové vlastnosti jsou lehkost, rychlost, přesnost a vícejazyčná podpora.</p><p>pomocí funkce uložit web (in-depth capture) můžete nastavit adresáře, které chcete uložit, což by bylo ve vašem případě <code>function reference</code> a <code>template tags</code></p><p><img src="https://i.stack.imgur.com/kw8p0.jpg" alt="enter image description here"></p><p>můžete také organizovat své sbírky stejně jako záložky, upravovat uložené soubory a zvýrazňovat klíčové části stránek a nejlepší na tom je vestavěné fulltextové vyhledávání.</p> <p>filtr <a href="http://codex.wordpress.org/plugin\_api/filter\_reference/wp\_insert\_post\_data">wp\_insert\_post\_data</a> filter to může udělat:</p><pre><code>add\_filter( 'wp\_insert\_post\_data' , 'filter\_post\_data' , '99', 2 ); function filter\_post\_data( $data , $postarr ) { // change post title $data['post\_title'] .= '\_suffix'; return $data; } </code></pre> <p>stručná odpověď:</p><ul> <li>pluginy nemodifikují existující soubory, zavádějí se do wordpressu přes exponované api.</li> <li>pluginy mohou modifikovat databázové schéma.</li> <li>pluginy nemusí odinstalovat čistě.</li> </ul><h1>zásuvkové háčky</h1><p>pluginy zavěsí do wordpressu v určitém místě vystaveném jádrem wordpressu.</p><p> <a href="http://codex.wordpress.org/plugin\_api">http://codex.wordpress.org/plugin\_api</a> </p><p>jako příklad, funkce <code>get\_option()</code> čte možnost webu z databáze. než bude v této funkci provedena jakákoli skutečná akce, wordpress volá <code>apply\_filters( 'pre\_option\_' . $option, false )</code>. vzhledem k možnosti <code>foobar</code> by plugin mohl přepsat skutečnou hodnotu této volby následujícím kódem:</p><pre><code>function override\_foobar( $unused ) { return 'my custom value.'; } add\_filter( 'pre\_option\_foobar', 'override\_foobar' ); // add\_filter(hook, function) </code></pre><p>viz také <a href="http://adambrown.info/p/wp\_hooks/">http://adambrown.info/p/wp\_hooks/</a> .</p><h1>pluginy modifikující databázi</h1><p>pluginy mají schopnost upravovat databázi, za předpokladu, že uživatel databáze wordpress má stále toto oprávnění. některé složitější pluginy přidávají vlastní tabulky. je možné, že by plugin mohl modifikovat základní tabulky, a doufejme, že by to dělali zodpovědně a způsobem, který by v případě, že by byl plugin odstraněn.</p><p>to musí být zkoumáno na základě plugin-by-plugin.</p><h1>odinstalace zásuvných modulů</h1><p>funkce <code>deactivate\_plugins()</code> volá akci <code>do\_action( 'deactivate\_' . trim( $plugin ) )</code>. zásuvný modul by se měl připojit k této akci, pokud se při deaktivaci pluginu musí provést určité věci. podle mých zkušeností několik pluginů dělá spoustu deaktivace vyčištění, tj. jejich nastavení v chladicím prostoru, pokud jsou znovu aktivovány.</p> <p>@ eamann má skvělou odpověď, pokud chcete různé rozvržení pro různé kategorie. otoh <strong> pokud chcete změnit css například na jinou barvu pozadí pro každou kategorii </strong>, zjistíte, že většina témat bude obsahovat kategorii slim jako css třídy na elementu <code>&lt;body&gt;</code> a/nebo případně dalších html prvcích, které jsou výstupem motivu. (a to iv případě, že vaše téma byste nemohli vždy přidat tuto funkci sami.)</p><p>například téma twentyten to dělá přesně; pro následující adresu url:</p><blockquote> <p> <a href="http://example.com/category/category-1/">http://example.com/category/category-1/</a> </p> </blockquote><p>jak vypadá prvek <code>&lt;body&gt;</code> takto:</p><blockquote> <p><code>&lt;body class="archive category category-category-1"&gt;</code></p> </blockquote><p>s vědomím výše uvedeného byste mohli přidat následující styly do souboru <code>style.css</code> vašeho motivu, který bude mít různou barvu pozadí pro každou stránku (jsem samozřejmě velmi zjednodušující, vaše skutečné css by bylo jistě sofistikovanější):</p><pre><code>/* style.css */ body.category-category-1 { background-color: red; } body.category-category-2 { background-color: green; } body.category-category-3 { background-color: blue; } </code></pre><p>vše, co opravdu potřebujete udělat, je zjistit, zda vaše téma to dělá nebo ne je <strong> zobrazit zdroj </strong> na stránkách kategorie zájmu a vyhledat vaši kategorii slug.</p><h3>použijte podřízený motiv</h3><p>pravděpodobně nechcete měnit <code>style.css</code> motivu; pravděpodobně budete chtít vytvořit <a href="https://wordpress.stackexchange.com/questions/290/customizing-a-wordpress-theme-without-changing-it/291#291"><strong> <em> child theme </em> </strong></a> místo. zde je několik odpovědí, kde mluvím o dětských tématech:</p><ul> <li> <a href="https://wordpress.stackexchange.com/questions/290/customizing-a-wordpress-theme-without-changing-it/291#291">přizpůsobení motivu wordpress bez jeho změny?</a> </li> <li> <a href="https://wordpress.stackexchange.com/questions/462/making-the-header-on-the-twenty-ten-theme-less-tall/463#463">tvorba záhlaví na téma téma dvacet deset méně tall?</a> </li> </ul><p>všimněte si, že ne všechny motivy podporují podřízené motivy. v případě těchto témat budete muset více zkoumat, jak jsou rozšířeny.</p> <p>moje střeva říká ne. servery odesílají gzipovaný obsah pouze v případě, že z prohlížeče obdrží správnou hlavičku accept-encoding. samotná záhlaví není součástí souboru cookie odeslaného prohlížečem, takže jej nebudete moci upravovat. servery to dělají, aby zabránily odeslání komprimovaného souboru do prohlížeče, který jej nepodporuje, a tím brání správnému zobrazení stránky.</p><p>alternativně byste mohli dělat to, co zní, jako byste již dělali, a vynutit si to kódem na straně serveru.</p>