Jak premisti forum phpbb na novy web i s prispevky?



dekuji moc za rady
Nahrajes tam phpmyadmin, udelas si export databaze do souboru a na novym webu udelas pres phpmyadmin zase import. Vsechno si zalohuj, nic nemaz, dokud si nebudes jistej, ze to opravdu bude fungovat. Dej pozor na kodovani cestiny.
<p>právě jsem vytvořil plugin, který to dělá. není to dokonalé, ale dělá svou práci.</p><p>najdete ho v mém githubu: <a href="https://github.com/pontusab/wp-ftp-media-library">https://github.com/pontusab/wp-ftp-media-library</a> </p><p>musíte tedy změnit některé věci v souboru na řádku 28:</p><pre><code>/** * change this to match your server * you only need to change the those with (*) * if marked with (-) its optional */ $settings = array( 'host' =&gt; 'ip or hostname', // * the ftp-server hostname 'user' =&gt; 'username', // * ftp-user 'pass' =&gt; 'password', // * ftp-password 'cdn' =&gt; 'cdn.example.com', // * this have to be a pointed domain or subdomain to the root of the uploads 'path' =&gt; '/', // - ftp-path, default is root (/). change here and add the dir on the ftp-server, 'base' =&gt; $upload\_dir['basedir'] // basedir on local ); </code></pre><p>to, co tento plugin dělá, mění strukturu uploadu z/year/month pouze na upload na lokálním počítači v našem případě<strong> server a </strong>. pak se používá php pro připojení k ftp přes: <a href="http://php.net/manual/en/function.ftp-connect.php">ftp\_connect</a> . funkce spustí při spuštění wp\_generate\_attachment\_metadata. pak spusťte <a href="http://php.net/manual/en/function.scandir.php">check ve složce uploadu, abyste zjistili, zda existují nějaké obrázky</a> , pokud ano, nahrají je všechny na ftp-server přes <a href="http://php.net/manual/en/function.ftp-put.php">ftp\_put</a> . po dokončení uploadu budou soubory odstraněny z lokálního počítače pomocí funkce <a href="http://php.net/manual/en/function.unlink.php">unlink</a> .</p><p>zásuvný modul pak změní adresu url obrázků na "veřejnou" ip adresu nebo hostname, které směřují na ftp-server. doporučuji použít něco jako static.mydomain.com nebo cdn.mydomai.com. je třeba je ukázat na ftp-server (server b), což umožňuje načítat obrazy z ftp-serveru.</p><p>stejně jako ostatní členové říkají, že jste k tomu používali ftp-server, jeho lepší s reálným cdn, mounted by fuse nebo něco jako amazon s3.</p> <p>můžete se podívat do modulu <a href="http://drupal.org/project/migrate">migrate</a> . přestože jsem to sám nevyužil, vím, že mnoho z nich jej používá k přesunu obsahu z webové stránky drupal 6 do webové stránky drupal 7). uvědomte si, že se jedná o pokročilý modul, který nemá žádné uživatelské rozhraní (o kterém vím). integruje se s <a href="http://drupal.org/project/migrate">drush</a> a umožňuje vám vytvářet migrační skripty a spouštět je z příkazového řádku.</p> <p>ahoj <strong> @ jonathan sampson </strong>:</p><p>existují <strong> několik zásuvných modulů, které usnadňují vytváření uživatelských typů příspěvků </strong> a některé umožňují definovat také vlastní pole, a to v konkrétním pořadí:</p><ul> <li> <a href="http://www.wpeasyposttypes.com/"><strong> typy jednoduchých příspěvků wp </strong></a> </li> <li> <a href="http://wordpress.org/extend/plugins/gd-taxonomies-tools/"><strong> vlastní příspěvky a nástroje taxonomie gd </strong></a> </li> <li> <a href="http://www.strangework.com/wordpress-plugins/custom-post-type-ui/"><strong> ui uživatelského typu příspěvku </strong></a> </li> <li> <a href="http://wordpress.org/extend/plugins/simple-fields/"><strong> jednoduchá pole </strong></a> </li> </ul><p>jak jsem zmínil výše, pracoval jsem na tom, který neposkytuje uživatelské rozhraní, jako jsou tyto, namísto toho rozšiřitelné rozhraní api pro složité typy polí (a také jednoduché). pro distribuci. možná za pár týdnů.</p><p>tyto pluginy uvedené výše by měly splňovat vaše základní potřeby a já se pokusím, aby se moje kompatibilní s daty uloženými všemi těmito v budoucnu v případě, že se rozhodnete použít moje v budoucnu.</p><p>můžete také najít tento příspěvek trochu pomoci také:</p><ul> <li> <a href="https://wordpress.stackexchange.com/questions/128/tips-for-using-wordpress-as-a-cms/187#187"><strong> tipy pro používání wordpressu jako cms? </strong></a> </li> </ul> <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>pokud nechcete používat <a href="http://codex.wordpress.org/create\_a\_network">více stránek</a> , přesto chcete mít více blogů se společným backendem, je jiný nápad:</p><ul> <li>přizpůsobte si téma motivu <a href="http://codex.wordpress.org/author\_templates">šablony autora</a> , aby každá domovská stránka autora blogu měla odlišný design</li> <li>vytvořit několik různých stylů, jeden na autora. použijte některou podmíněnou logiku k zobrazení příslušného šablony stylů při prohlížení jednotlivých příspěvků blogu, aby se příspěvek shodoval s návrhem domovské stránky autora.</li> <li>vytvořte několik různých <a href="http://www.quickonlinetips.com/archives/2007/11/how-to-create-multiple-dynamic-sidebars-for-wordpress-widgets/">postranních panelů</a> , jednoho na autora. to vám umožní mít různé widgety na autora. budete potřebovat podmíněnou logiku, abyste věděli, který boční panel se má také zobrazit.</li> </ul><p>samozřejmě, že by to vyžadovalo i trochu vylepšování. více míst může být méně práce.</p> <p>svým způsobem přecházíte na nový web. udržujete produkty, ale v podstatě měníte téměř všechno ostatní: adresy url, interní propojení, html stránek a back-end (software košíku). je nemožné říci, jaké dlouhodobé důsledky by mohly být, aniž bychom znali podrobnosti, ale pokud vám nový software usnadní údržbu vašeho webu, pak vám poskytne čas na vyřešení jakýchkoli vtipků, které by se mohly objevit. jedná se o velký krok, proto jej velmi dobře naplánujte a sledujte každý krok, abyste se ujistili, že funguje podle plánu. pravděpodobně uvidíte poměrně velké výkyvy v indexování a hodnocení, takže se ujistěte, že jste schopni je „spolknout“ (vybrat pomalé období, mít k dispozici nějaký rozpočet na reklamy atd.).</p><ul> <li>změny v obsahu a interním propojení ovlivní vaše hodnocení, alespoň v krátkodobém horizontu.</li> <li>nebojte se o „příliš mnoho přesměrování“ pro celý web, ale ujistěte se, že pro každou adresu url musíte udělat pouze jedno (nepřesměrovat ve více krocích). ujistěte se, že přesměrování (staré adresy url) nejsou zakázána pomocí souboru robots.txt a vyzkoušejte je pomocí nástrojů pro webmastery společnosti google. vyzkoušejte také všechny adresy url, abyste se ujistili, že přesměrují (procházejte starý web pomocí nástroje, jako je xenu, a poté, co máte nastavena přesměrování, zkontrolujte všechny tyto adresy url). ano, je to trochu práce :), ale je lepší o tom mít jistotu. mějte na paměti, že jakmile budou přesměrování nalezena, struktura vašeho webu bude „znovuobjevena“, jako by to bylo u nového webu, takže to určitě něco ovlivní procházení, indexování a hodnocení na chvíli. nastavte soubory sitemap pro staré a nové adresy url a sledujte svůj pokrok v nástrojích pro webmastery. buďte velmi, velmi trpěliví.</li> <li>výhody vs nevýhody ... to je něco, co musíte určit sami. přesun webu, jako je tento, je velkým krokem, přinejmenším musíte naplánovat každý krok a správně nastavit očekávání.</li> </ul><p>možnost jasně sledovat postup (prostřednictvím analytics a počtu indexovaných adres url) vám pomůže zůstat v klidu během pohybu. v každém případě se pokuste nedělat nic drastického, pokud by to trvalo trochu déle - pokud jste si udělali domácí úkoly a technická stránka byla řádně naplánována a testována před přesunem, pak v nejhorším případě budete muset počkat trochu déle, než se očekávalo .</p> <p>zde je kód, který používám vždy, když nastavím nový blog wordpress:</p><p>custom admin footer text</p><pre><code>// customize admin footer text function custom\_admin\_footer() { echo '&lt;a href="http://www.netconstructor.com/"&gt;website design by netconstructor, inc.&lt;/a&gt;'; } add\_filter('admin\_footer\_text', 'custom\_admin\_footer'); </code></pre><p>vymazat verze informací z head krmiv</p><pre><code>// remove version info from the head of feeds function complete\_version\_removal() { return ''; } add\_filter('the\_generator', 'complete\_version\_removal'); </code></pre><p>odstraňte junk z hlavy stránk veřejných stránků</p><pre><code>// remove junk from the header of public website pages 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>odstranit oznámení o wordpressu pro všechny uživatele except sysadmin</p><pre><code>// remove the wordpress update notification for all users except sysadmin global $user\_login; get\_currentuserinfo(); if ($user\_login !== "sysadmin") { add\_action( 'init', create\_function( '$a', "remove\_action( 'init', 'wp\_version\_check' );" ), 2 ); add\_filter( 'pre\_option\_update\_core', create\_function( '$a', "return null;" ) ); } </code></pre><p>uživatelský admin logos:</p><pre><code>// custom admin login header logo function my\_custom\_login\_logo() { echo '&lt;style type="text/css"&gt; h1 a { background-image:url('.get\_bloginfo('template\_directory').'/images/excitesteps-login-logo.png) !important; } &lt;/style&gt;'; } add\_action('login\_head', 'my\_custom\_login\_logo'); // custom admin logic header logo add\_action('admin\_head', 'my\_custom\_logo'); function my\_custom\_logo() { echo '&lt;style type="text/css"&gt;#header-logo { background-image: url('.get\_bloginfo('template\_directory').'/images/excitesteps-icon.gif) !important; }&lt;/style&gt;'; } // custom admin login header link &amp; alt text function change\_wp\_login\_url() { echo bloginfo('url'); } function change\_wp\_login\_title() { echo get\_option('blogname'); } add\_filter('login\_headerurl', 'change\_wp\_login\_url'); add\_filter('login\_headertitle', 'change\_wp\_login\_title'); </code></pre> <p>ach bože, myslím, že problém pramení ze smíchání schématu mysql různých verzí mysql. nejprve spusťte tento dotaz:</p><pre><code>desc mysql.user; </code></pre><p>pro mysql 5.6 získáte 43 sloupců</p><pre><code>mysql&gt; desc mysql.user; +++++++ | field | type | null | key | default | extra | +++++++ | host | char(60) | no | pri | | | | user | char(16) | no | pri | | | | password | char(41) | no | | | | | select\_priv | enum('n','y') | no | | n | | | insert\_priv | enum('n','y') | no | | n | | | update\_priv | enum('n','y') | no | | n | | | delete\_priv | enum('n','y') | no | | n | | | create\_priv | enum('n','y') | no | | n | | | drop\_priv | enum('n','y') | no | | n | | | reload\_priv | enum('n','y') | no | | n | | | shutdown\_priv | enum('n','y') | no | | n | | | process\_priv | enum('n','y') | no | | n | | | file\_priv | enum('n','y') | no | | n | | | grant\_priv | enum('n','y') | no | | n | | | references\_priv | enum('n','y') | no | | n | | | index\_priv | enum('n','y') | no | | n | | | alter\_priv | enum('n','y') | no | | n | | | show\_db\_priv | enum('n','y') | no | | n | | | super\_priv | enum('n','y') | no | | n | | | create\_tmp\_table\_priv | enum('n','y') | no | | n | | | lock\_tables\_priv | enum('n','y') | no | | n | | | execute\_priv | enum('n','y') | no | | n | | | repl\_slave\_priv | enum('n','y') | no | | n | | | repl\_client\_priv | enum('n','y') | no | | n | | | create\_view\_priv | enum('n','y') | no | | n | | | show\_view\_priv | enum('n','y') | no | | n | | | create\_routine\_priv | enum('n','y') | no | | n | | | alter\_routine\_priv | enum('n','y') | no | | n | | | create\_user\_priv | enum('n','y') | no | | n | | | event\_priv | enum('n','y') | no | | n | | | trigger\_priv | enum('n','y') | no | | n | | | create\_tablespace\_priv | enum('n','y') | no | | n | | | ssl\_type | enum('','any','x509','specified') | no | | | | | ssl\_cipher | blob | no | | null | | | x509\_issuer | blob | no | | null | | | x509\_subject | blob | no | | null | | | max\_questions | int(11) unsigned | no | | 0 | | | max\_updates | int(11) unsigned | no | | 0 | | | max\_connections | int(11) unsigned | no | | 0 | | | max\_user\_connections | int(11) unsigned | no | | 0 | | | plugin | char(64) | yes | | | | | authentication\_string | text | yes | | null | | | password\_expired | enum('n','y') | no | | n | | +++++++ 43 rows in set (0.15 sec) </code></pre><p>pro mysql 5.5 získáte 42 sloupců</p><pre><code>mysql&gt; desc mysql.user; +++++++ | field | type | null | key | default | extra | +++++++ | host | char(60) | no | pri | | | | user | char(16) | no | pri | | | | password | char(41) | no | | | | | select\_priv | enum('n','y') | no | | n | | | insert\_priv | enum('n','y') | no | | n | | | update\_priv | enum('n','y') | no | | n | | | delete\_priv | enum('n','y') | no | | n | | | create\_priv | enum('n','y') | no | | n | | | drop\_priv | enum('n','y') | no | | n | | | reload\_priv | enum('n','y') | no | | n | | | shutdown\_priv | enum('n','y') | no | | n | | | process\_priv | enum('n','y') | no | | n | | | file\_priv | enum('n','y') | no | | n | | | grant\_priv | enum('n','y') | no | | n | | | references\_priv | enum('n','y') | no | | n | | | index\_priv | enum('n','y') | no | | n | | | alter\_priv | enum('n','y') | no | | n | | | show\_db\_priv | enum('n','y') | no | | n | | | super\_priv | enum('n','y') | no | | n | | | create\_tmp\_table\_priv | enum('n','y') | no | | n | | | lock\_tables\_priv | enum('n','y') | no | | n | | | execute\_priv | enum('n','y') | no | | n | | | repl\_slave\_priv | enum('n','y') | no | | n | | | repl\_client\_priv | enum('n','y') | no | | n | | | create\_view\_priv | enum('n','y') | no | | n | | | show\_view\_priv | enum('n','y') | no | | n | | | create\_routine\_priv | enum('n','y') | no | | n | | | alter\_routine\_priv | enum('n','y') | no | | n | | | create\_user\_priv | enum('n','y') | no | | n | | | event\_priv | enum('n','y') | no | | n | | | trigger\_priv | enum('n','y') | no | | n | | | create\_tablespace\_priv | enum('n','y') | no | | n | | | ssl\_type | enum('','any','x509','specified') | no | | | | | ssl\_cipher | blob | no | | null | | | x509\_issuer | blob | no | | null | | | x509\_subject | blob | no | | null | | | max\_questions | int(11) unsigned | no | | 0 | | | max\_updates | int(11) unsigned | no | | 0 | | | max\_connections | int(11) unsigned | no | | 0 | | | max\_user\_connections | int(11) unsigned | no | | 0 | | | plugin | char(64) | yes | | | | | authentication\_string | text | yes | | null | | +++++++ 42 rows in set (0.01 sec) mysql&gt; </code></pre><p>pro mysql 5.1 získáte 39 sloupců</p><pre><code>mysql&gt; desc mysql.user; +++++++ | field | type | null | key | default | extra | +++++++ | host | char(60) | no | pri | | | | user | char(16) | no | pri | | | | password | char(41) | no | | | | | select\_priv | enum('n','y') | no | | n | | | insert\_priv | enum('n','y') | no | | n | | | update\_priv | enum('n','y') | no | | n | | | delete\_priv | enum('n','y') | no | | n | | | create\_priv | enum('n','y') | no | | n | | | drop\_priv | enum('n','y') | no | | n | | | reload\_priv | enum('n','y') | no | | n | | | shutdown\_priv | enum('n','y') | no | | n | | | process\_priv | enum('n','y') | no | | n | | | file\_priv | enum('n','y') | no | | n | | | grant\_priv | enum('n','y') | no | | n | | | references\_priv | enum('n','y') | no | | n | | | index\_priv | enum('n','y') | no | | n | | | alter\_priv | enum('n','y') | no | | n | | | show\_db\_priv | enum('n','y') | no | | n | | | super\_priv | enum('n','y') | no | | n | | | create\_tmp\_table\_priv | enum('n','y') | no | | n | | | lock\_tables\_priv | enum('n','y') | no | | n | | | execute\_priv | enum('n','y') | no | | n | | | repl\_slave\_priv | enum('n','y') | no | | n | | | repl\_client\_priv | enum('n','y') | no | | n | | | create\_view\_priv | enum('n','y') | no | | n | | | show\_view\_priv | enum('n','y') | no | | n | | | create\_routine\_priv | enum('n','y') | no | | n | | | alter\_routine\_priv | enum('n','y') | no | | n | | | create\_user\_priv | enum('n','y') | no | | n | | | event\_priv | enum('n','y') | no | | n | | | trigger\_priv | enum('n','y') | no | | n | | | ssl\_type | enum('','any','x509','specified') | no | | | | | ssl\_cipher | blob | no | | null | | | x509\_issuer | blob | no | | null | | | x509\_subject | blob | no | | null | | | max\_questions | int(11) unsigned | no | | 0 | | | max\_updates | int(11) unsigned | no | | 0 | | | max\_connections | int(11) unsigned | no | | 0 | | | max\_user\_connections | int(11) unsigned | no | | 0 | | +++++++ 39 rows in set (0.00 sec) mysql&gt; </code></pre><p>pro mysql 5.0 získáte 37 sloupců</p><pre><code>mysql&gt; desc mysql.user; +++++++ | field | type | null | key | default | extra | +++++++ | host | char(60) | no | pri | | | | user | char(16) | no | pri | | | | password | char(41) | no | | | | | select\_priv | enum('n','y') | no | | n | | | insert\_priv | enum('n','y') | no | | n | | | update\_priv | enum('n','y') | no | | n | | | delete\_priv | enum('n','y') | no | | n | | | create\_priv | enum('n','y') | no | | n | | | drop\_priv | enum('n','y') | no | | n | | | reload\_priv | enum('n','y') | no | | n | | | shutdown\_priv | enum('n','y') | no | | n | | | process\_priv | enum('n','y') | no | | n | | | file\_priv | enum('n','y') | no | | n | | | grant\_priv | enum('n','y') | no | | n | | | references\_priv | enum('n','y') | no | | n | | | index\_priv | enum('n','y') | no | | n | | | alter\_priv | enum('n','y') | no | | n | | | show\_db\_priv | enum('n','y') | no | | n | | | super\_priv | enum('n','y') | no | | n | | | create\_tmp\_table\_priv | enum('n','y') | no | | n | | | lock\_tables\_priv | enum('n','y') | no | | n | | | execute\_priv | enum('n','y') | no | | n | | | repl\_slave\_priv | enum('n','y') | no | | n | | | repl\_client\_priv | enum('n','y') | no | | n | | | create\_view\_priv | enum('n','y') | no | | n | | | show\_view\_priv | enum('n','y') | no | | n | | | create\_routine\_priv | enum('n','y') | no | | n | | | alter\_routine\_priv | enum('n','y') | no | | n | | | create\_user\_priv | enum('n','y') | no | | n | | | ssl\_type | enum('','any','x509','specified') | no | | | | | ssl\_cipher | blob | no | | null | | | x509\_issuer | blob | no | | null | | | x509\_subject | blob | no | | null | | | max\_questions | int(11) unsigned | no | | 0 | | | max\_updates | int(11) unsigned | no | | 0 | | | max\_connections | int(11) unsigned | no | | 0 | | | max\_user\_connections | int(11) unsigned | no | | 0 | | +++++++ 37 rows in set (0.01 sec) mysql&gt; </code></pre><p>pro mysql 4.x získáte 31 sloupců</p><pre><code>mysql&gt; desc mysql.user; +++++++ | field | type | null | key | default | extra | +++++++ | host | varchar(60) binary | | pri | | | | user | varchar(16) binary | | pri | | | | password | varchar(16) binary | | | | | | select\_priv | enum('n','y') | | | n | | | insert\_priv | enum('n','y') | | | n | | | update\_priv | enum('n','y') | | | n | | | delete\_priv | enum('n','y') | | | n | | | create\_priv | enum('n','y') | | | n | | | drop\_priv | enum('n','y') | | | n | | | reload\_priv | enum('n','y') | | | n | | | shutdown\_priv | enum('n','y') | | | n | | | process\_priv | enum('n','y') | | | n | | | file\_priv | enum('n','y') | | | n | | | grant\_priv | enum('n','y') | | | n | | | references\_priv | enum('n','y') | | | n | | | index\_priv | enum('n','y') | | | n | | | alter\_priv | enum('n','y') | | | n | | | show\_db\_priv | enum('n','y') | | | n | | | super\_priv | enum('n','y') | | | n | | | create\_tmp\_table\_priv | enum('n','y') | | | n | | | lock\_tables\_priv | enum('n','y') | | | n | | | execute\_priv | enum('n','y') | | | n | | | repl\_slave\_priv | enum('n','y') | | | n | | | repl\_client\_priv | enum('n','y') | | | n | | | ssl\_type | enum('','any','x509','specified') | | | | | | ssl\_cipher | blob | | | | | | x509\_issuer | blob | | | | | | x509\_subject | blob | | | | | | max\_questions | int(11) unsigned | | | 0 | | | max\_updates | int(11) unsigned | | | 0 | | | max\_connections | int(11) unsigned | | | 0 | | +++++++ 31 rows in set (0.01 sec) </code></pre><p>představte si tento scénář:</p><ul> <li>nainstalujete 5.0</li> <li>odinstalujete 5.0</li> <li>zapomněli jste se přesunout/var/lib/mysql z cesty</li> <li>nainstalujete 5.1</li> </ul><p>uživatelská oprávnění se začnou posouvat. kdykoli spustíte <code>show grants;</code>, je obtížné očekávat sloupce na specifických místech v mysql.user (vzhledem k tomu, že mysql.user je myisam a jeho row\_format je dynamic (výchozí)). je velmi snadné vidět, jak uživatel náhle ztratí oprávnění, když znovu načtete verzi mysql 5.0 mysql.user do instance mysql 5.1.</p><p>v budoucnu, pokud byste se někdy rozhodli znovu načíst uživatele do mysql, zkuste uživatele výpisem do textového souboru pomocí <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-show-grants.html"><strong> pt-show-grantů </strong></a> spíše než mysqldump.</p><p>vlastně jsem psal svou vlastní verzi pt-show-grantů takto:</p><pre><code>mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -a -e"select concat('show grants for ''',user,'''@''',host,''';') from mysql.user where user&lt;&gt;''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -a | sed 's/$/;/g' &gt; mysqlusergrants.sql </code></pre><p>tím vzniknou všechny uživatelské granty jako sql, což je mnohem přenosnější než standardní techniky mysql. jednoduše znovu načtěte skript sql a provedou se granty. samozřejmě, že takové překládky jsou kompatibilní pouze dopředu, nikdy zpět.</p> <p>myslím, že se to opravdu rozpadne na váš provoz. pomalejší hardware, pomalejší (již pomalejší) generování stránky. není to specifické pro wp, je to stejné pro všechny velké php skripty.</p><p>pokud dostanete serverový hit každou chvíli, jako na dev boxu nebo rodinném blogu, není to žádný velký problém. bude to jen vyplivnout stránky pomaleji. dostanete-li pravidelně souběžné zásahy, vaše stránky se dostanou z webu poměrně snadno.</p><p>všimněte si také, že mnoho low-end sdílené host směšuje více lokalit na low-end hardware. je to samozřejmě ne tak nízké, jako to, na co jste se připojili, ale nečekal bych, že velký rozdíl ve výkonu ve srovnání s přeplněným sdíleným serverem.</p> <p>prostě jsem rychle prohledal koncept reblogu, protože jsem jistě nikdy nepoužil tumblra a netušil jsem, o čem mluvíte. po přečtení trochu o tom začalo to znít velmi dobře ...</p><p>většina blogů dnes umožňuje přidat retweet (twitter), like (facebook) nebo sdílet toto (obecné) tlačítko přímo na příspěvek. ty jsou velmi specifické pro síť a jsou určeny přímo pro api různých sociálních sítí a aplikací pro crowdsourcing. tumblr, protože provozují stručnou síť blogů, udělali totéž. tlačítko reblog vám umožňuje rychle překládat obsah na vašich vlastních stránkách v síti tumblr. as <a href="http://newcritics.com/blog1/2008/01/26/the-reblog-button/">jeden web zmínil</a> , ne příliš rozšiřitelný, ale stále docela v pohodě.</p><p>rozdíl je v tom, že každý vlastní hostovaný blog wordpress <strong> <em> je vlastní webovou aplikací </em> </strong>. takže tam není opravdu žádný způsob, jak můžete mít blog autoři postavit "podíl na vlastní self-hosted aplikace" widget na svých stránkách. naštěstí <em> existuje řešení. </em></p><h2>stiskněte toto tlačítko</h2><p>před časem, wordpress představil bookmarklet volal <a href="http://codex.wordpress.org/press\_it">stiskněte it</a> . jednalo se o útržek kódu javascriptu, který se nacházel ve vašem panelu nástrojů pro záložky, a umožnil vám rychle a snadno posílat zajímavý obsah, který jste našli online, na své vlastní stránky. od verze wordpress 2.6 byla funkce nahrazena <a href="http://codex.wordpress.org/press\_this">stiskněte toto</a> , podobný bookmarklet, který vám umožní</p><blockquote> <p>vytvořte příspěvek tak, že citujete nějaký text, obrázky a videa na libovolné webové stránce.</p> </blockquote><p>chcete-li použít stiskněte toto, přejděte do dílčího panelu nástroje a přetáhněte odkaz "stiskněte toto tlačítko" na panel nástrojů pro záložky.</p><p><img src="https://i.stack.imgur.com/nxuak.png" alt="tools sub-panel"></p><p>když procházíte internet a najdete něco, co se vám líbí, zvýrazněte text (nebo ne a budete používat celý obsah stránky) a klepněte na tlačítko tisknout tuto záložku. zobrazí se vyskakovací okno, které vám umožní okamžitě upravovat a odesílat zobrazený obsah.</p><p><img src="https://i.stack.imgur.com/bmlcw.png" alt="press this pop-up window"></p><p>pokud jde o zobrazování v poznámkách části blogu tumblr, to je úplně jiná otázka. hledáte velmi specifickou, vlastní integraci mezi dvěma různými platformami ... našel jsem <a href="http://wordpress.org/extend/plugins/wp2tumblr/">jeden plug-in</a> , který automaticky odešle příspěvek na tumblr blog z wordpress, ale naposledy byl aktualizován v dubnu 2008, takže si nejsem jistý, že to bude příliš mnoho pomoci. k dispozici je také synchronizační systém nazvaný <a href="http://wordpress.org/extend/plugins/tumblrize/">tumblrize</a> , který automaticky zařadí váš obsah wordpress do tumblr, aktualizuje jej, když změníte věci na wp, a aktualizujete wp kopírovat, pokud změníte věci na tumblr.</p>