wordpress - přechod z kategorií ke značkám
<p>mám několik stárnoucích wordpress blogů, kde jsem udělal chybu, že jsem vytvořil příliš mnoho kategorií (v některých případech 50+). to bylo částečně způsobeno skutečností, že značkování ještě nebylo v wordpressu dostupné.</p><p>chtěl bych nyní kondenzovat kategorie a implementovat značky. problém je v tom, že nechci přerušit indexované odkazy.</p><p>jakou strategii a možná plug-iny bych mohl zvážit? v ideálním případě by stránky se seznamem kategorií trvale přesměrovávaly na příslušné značky, které jsem nastavil. také jsem se musel vypořádat s problémem lidí, kteří stahují zdroje přímo z kategorií.</p><p>měl bych těchto několik stránek jen křídou učit a nechat je na pokoji, nebo existuje způsob, jak udělat tuto opravu tak pozdě ve hře?</p>
<p>v nabídce <code>tools &gt; import</code> na vašem webu je plugin, který můžete nainstalovat s názvem <strong> <a href="http://wordpress.org/extend/plugins/wpcat2tag-importer/">převaděč kategorií a značek</a> </strong>, který po instalaci vám poskytne kontrolu nad tím, jak zacházet s kategoriemi, které byste chtěli převést.</p><p>jedná se o relativně bezbolestný proces ve třech případech, kdy jsem ho použil, ale nikdy jsem se nezabýval migrací starších adres url. pokud se jedná o problém a kategorie „slimáci“ pro kategorii jsou stejné a běžíte pod aplikací apache, mělo by to být trikem některých směrnic <code>.htaccess</code>. takže za předpokladu, že máte adresy url, jako například:</p><pre><code>http://example.com/archive/category/foo http://example.com/archive/category/bar </code></pre><p>a chci je změnit na:</p><pre><code>http://example.com/archive/tag/foo http://example.com/archive/tag/bar </code></pre><p>do svého souboru <code>.htaccess</code> byste přidali směrnice pro každou z nich, například:</p><pre><code>redirect permanent /archive/category/bar http://example.com/archive/tag/bar redirect permanent /archive/category/foo http://example.com/archive/tag/foo </code></pre><p>nyní to předpokládá, že je chcete přesměrovat, a žádný z autorů vašeho blogu tyto kategorie nepřidá!</p><p>ale obecně by to byl přístup, který by fungoval.</p><p>pokud jste <strong> vůbec </strong> znepokojeni ztrátou dat, když změníte obsah, zálohujte databáze mysql. <em> promiň, musel jsem to křičet. : -) </em> a pokud jde o haywire, pak jednoduše obnovte databázi.</p><p>pokud jste ve svém obsahu odkazovali na tyto staré adresy url, přesměrují se dobře. ale můžete také spustit <a href="http://wordpress.org/extend/plugins/search-and-replace/"><strong> wordpress search and replace </strong></a> plugin, který usnadňuje migraci, jako je tato, ale opět, zálohy mysli, zejména s plugin pro vyhledávání a nahrazování, protože provádí změny bez zálohy.</p>
<p>nejlepší je vytvořit šablonu stránky s následujícím kódem. také se musíte rozhodnout, zda budete používat značku nebo kategorii. níže uvedený kód předpokládá, že používáte kategorii.</p><pre><code>&lt;div class="news"&gt; &lt;?php //the query wp\_query('showposts=5&amp;category\_name=news'); //the loop if ( have\_posts() ) : while ( have\_posts() ) : the\_post(); ?&gt; &lt;h2&gt;&lt;a href="&lt;?php the\_permalink() ?&gt;" rel="bookmark" title="permanent link to &lt;?php the\_title\_attribute(); ?&gt;"&gt;&lt;?php the\_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt; &lt;div class="post\_content"&gt; &lt;?php the\_excerpt(); ?&gt; &lt;/div&gt; &lt;? endwhile; endif; //reset query wp\_reset\_query(); ?&gt; &lt;/div&gt; &lt;div class="events"&gt; &lt;?php //the query wp\_query('showposts=5&amp;category\_name=events'); //the loop if ( have\_posts() ) : while ( have\_posts() ) : the\_post(); ?&gt; &lt;h2&gt;&lt;a href="&lt;?php the\_permalink() ?&gt;" rel="bookmark" title="permanent link to &lt;?php the\_title\_attribute(); ?&gt;"&gt;&lt;?php the\_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt; &lt;div class="post\_content"&gt; &lt;?php the\_excerpt(); ?&gt; &lt;/div&gt; &lt;? endwhile; endif; //reset query wp\_reset\_query(); ?&gt; &lt;/div&gt; </code></pre> <p>hodnota pro global\_terms\_enabled pro multisite je uložena v wp\_sitemeta</p><p> <a href="http://wordpress.org/support/topic/plugin-edit-category-slug-wpmu-how-to-make-it-work-with-last-wpmu-30">http://wordpress.org/support/topic/plugin-edit-category-slug-wpmu-how-to-make-it-work-with-last-wpmu-30</a> </p><p>přepnula jsem to na vypnuto a znovu se objeví pole kategorie slug. pokud se někdo může vyjádřit k tomu, zda je to bezpečné vypnout, bylo by to velmi oceňováno.</p> <p>nevím, jaké konkrétní rozvržení cesty na vašem webovém serveru, ale položky z protokolu chyb se nedívám na mě, že je to konkrétně wordpress související:</p><blockquote> <p>neplatná metoda v požadavku n. n</p> </blockquote><p>tato chyba je způsobena neplatným požadavkem http. každý požadavek http má metodu. určitě to chybělo v požadavku, který vedl k položce protokolu.</p><blockquote> <p>soubor neexistuje:/var/www/vhosts/default/htdocs/tv2</p> </blockquote><p>a <em> soubor neexistuje </em> zpráva není normálně vytvořena, když php skript vrátí 404 záhlaví odpovědí. takže nejvíce jistě, tato chyba nebyla hlášena wordpress, ale server sám. konfigurace mod\_rewrite pro váš blog wordpress byla pravděpodobně nedostupná.</p><blockquote> <p>adresářový index zakázán direktivou options:/var/www/html /</p> </blockquote><p>to mi připadá stejně. pokud je <code>/var/www/html/</code> webroot vašeho blogu, pak to ukazuje, že index.php nebyl nalezen nebo nebyl vyhledán jako index adresáře vaším webovým serverem.</p><hr><p>takže nakonec to vypadá jako webserver konfigurace problém pro mě. trvale přestavba permalinků by zde tehdy nepomohla. pokud si nejste jisti, můžete použít <a href="http://codex.wordpress.org/user:hakre/permafrost">permafrost (wordpress plugin)</a> . související otázka regaring 404 chyb a permalinks je: <a href="https://wordpress.stackexchange.com/questions/3954/single-type-php-not-working-delivering-404">single-type.php nefunguje, dodává 404.</a> </p> a neni to lepsi udelat jednoduseji? napr [https://365tipu.wordpress.com/2015/08/28/kde-zmenim-jme...](https://365tipu.wordpress.com/2015/08/28/kde-zmenim-jmeno-pocitace-s-windows-10-kde-ho-pridam-do-domeny-ci-pracovni-skupiny/) <p>ano, <a href="http://codex.wordpress.org/create\_a\_network">je to možné</a> .</p><p>subdomény můžete nastavit takto: <code>subdomain1.domain.com</code>, <code>subdomains2.domain.com</code>.</p><p>poté, co nastavíte síť, použijte plugin pro mapování domény pro nastavení názvu domény pro každou z nich. <code>subdomain1.domain.com</code> se stane <code>domain1.com</code>, <code>subdomain2.domain.com</code> se stane <code>domain2.com</code>, atd.</p><p>existuje několik pluginů pro mapování domén:</p><ul> <li> <a href="http://premium.wpmudev.org/project/domain-mapping">http://premium.wpmudev.org/project/domain-mapping</a> (ten, který bych doporučil, ale je na stránce placeného členství)</li> <li> <a href="http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/">http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/</a> (zdarma, ale nikdy jsem ho nepoužil)</li> </ul> <p>můžete použít funkci wordpress get\_children. i když si nemyslím, že je to rozdíl, výkon-moudrý.</p><pre><code>&lt;?php while (have\_posts()) : the\_post(); ?&gt; &lt;?php $attachment = array\_values( get\_children( array( 'post\_parent' =&gt; $post-&gt;id, 'post\_type' =&gt; 'attachment', 'post\_mime\_type' =&gt; 'image', 'order' =&gt; 'asc', 'numberposts' =&gt; 1 ) ) ); ?&gt; &lt;div class="searchitem" style="clear:both;"&gt; &lt;h3 id="post-&lt;?php the\_id(); ?&gt;"&gt; &lt;?php if( $attachment ) echo '&lt;img src="' . wp\_get\_attachment\_url($attachment[0]-&gt;id) . '" class="post-attachment" /&gt;'; ?&gt; &lt;a href="&lt;?php the\_permalink() ?&gt;" rel="bookmark" title="permanent link to &lt;?php the\_title\_attribute(); ?&gt;"&gt;&lt;?php the\_title(); ?&gt;&lt;/a&gt;&lt;/h3&gt; &lt;small&gt;&lt;?php the\_time('l, f js, y') ?&gt;&lt;/small&gt; &lt;div class="excerpt"&gt;&lt;?php echo $post-&gt;post\_excerpt; ?&gt;&lt;/div&gt; &lt;div class="postmetadata"&gt;posted in &lt;?php the\_category(', ') ?&gt; | &lt;?php comments\_popup\_link('no comments &amp;#187;', '1 comment &amp;#187;', '% comments &amp;#187;'); ?&gt;&lt;/div&gt; &lt;/div&gt; &lt;?php endwhile; ?&gt; </code></pre> <p>zdá se mi to možné. většina z toho souvisí se správou serveru a nejen s wordpressem, takže pravděpodobně <a href="https://serverfault.com/search?q=wildcard+dns">server fault má také zajímavé informace o tomto problému</a> .</p><p>na straně dns byste vytvořili zástupný znak na serveru pomocí aplikace wordpress a definovali své další subdomény na serverech, které tyto servery hostují (některé nebo všechny mohou být stejné jako server wordpress). <a href="https://serverfault.com/questions/128673/where-would-a-wildcard-dns-record-be-prioritized/128724#128724">zástupné znaky mají vždy nejnižší prioritu</a> .</p><p>pro stranu serveru je užitečné vědět, že pokud požadavek dosáhne apache, ale v souboru <code>&lt;virtualhost&gt;</code> nenajde odpovídající <code>servername</code> nebo <code>serveralias</code>, vrátí se první virtuální host. takže nakonfigurujete nastavení wordpressu jako prvního hostitele a ostatní na něm spuštěné.</p> Jak je uvedeno v komentářů podle apphacker jsme opravdu nevím, co se snažíte udělat. Pokud se chystáte na právě škrábání odkazy z html webové stránky, pak bych doporučil nějaké lexikální generátor skeneru: jako flex.


Dostanete-li webové stránky url jako vstup pak budete muset použít nějaký síťový kód pro čtení webových stránek. Pokud si nevíte nic o propojení v C pak bych doporučil googling beej příručky a jít odtamtud vědět.


Pokud jste jen dostat soubor rovnou XML, jak vaše značky ukazují, pak ještě jednou bych doporučil flex-li si absolutně nutné použít C. Pokud nemáte používat C pak bych doporučil Perl nebo Python; oni jsou pravděpodobně vhodnější pro tuto práci.


Ať tak či onak tě potřebujeme, aby nám více informací, ale doufám, že pomáhá pro tuto chvíli. <blockquote> <p>existuje lepší způsob, jak toho dosáhnout pomocí vlastních taxonomií?</p> </blockquote><p>máte pravdu na těch penězích. namísto pokusu o vytvoření vlastního příspěvku do dítěte standardního příspěvku (protože nemůžete) doporučuji použít vlastní taxonomii k objednání věcí.</p><p>v zásadě můžete vytvořit vlastní hierarchickou taxonomii a použít ji k "kategorizaci" standardních příspěvků i vlastních příspěvků. vaše standardní příspěvky byste označili jako nadřazené v taxonomii a své vlastní příspěvky jako dítě.</p><h3>druhá možnost</h3><p>další možností by bylo použití vlastního pole pro rodičovské dědictví. to by mohlo být o něco rychlejší, než aby kód a intuitivnější k použití (plus to vám dá nějaké přidané ovládání).</p><p>přidejte vlastní pole meta do vlastního typu příspěvku nazvaného "rodiče". to pak může být seznam id příspěvků, které by měl být podřízený příspěvek vnořen. pokud potřebujete seznam vyvolat, můžete provést rychlý dotaz na <code>select</code> všechny vaše vlastní příspěvky, které mají rodičovský identifikátor v seznamu svých rodičů.</p> Museli byste jej procházet zcela hledat každou stránku pro jedinečné spojení v rámci webu a pak dát je do indexu.


Také pro každého odkazu najdete v rámci webu, pak je třeba navštívit tuto stránku a hledat další jedinečné spojení.


Byste použít nástroj, jako je HtmlAgilityPack snadno uchopit URL a extrahovat odkazy z nich.


Napsal jsem článek, který se dotýká na těžbu odkazy součást problému:


* <http://runtingsproper.blogspot.com/2009/11/easily-extracting-links-from-snippet-of.html>