Existuje snadno srozumitelné schéma rozhodnout, jaký typ kódu patří do pluginu nebo functions.php
tématu?
Tam jsoumnohopřípadů a mnoho debat o tomto tématu, většinou proto, že existují nějaké mylné představy o vnitřním fungování WordPressu. Žádám o odpověď na základě faktů, nikoli názorů.
Mělo by vysvětlit, jak tyto body řešit (a pravděpodobně i více):
add_theme_support( 'automatic-feed-links' );
meta
prvkyPro obě strany jsou často klady a zápory. Naše nejoblíbenější otázka Nejlepší kolekce kódu pro váš function.php soubor dostal spoustu útržků kódu jako odpovědi, které jsou přinejmenším diskutabilní.
Potřebujeme kritéria, která začátečník může pochopit, možná kontrolní seznam - s důvody.
Podívejte se také na související otázku Chip Bennett na naší meta stránce: Otázky, které konkrétně žádají o řešení "bez pluginu"
Související: Kde vložím fragmenty kódu, které jsem našel, nebo někde jinde na webu?
Začal bych s touto otázkou: Je funkčnost spojena s prezentací obsahu, nebo s generací/správou obsahu nebo stránek nebo identity uživatele?
Pokud funkce nesouvisí konkrétně s {prezentace obsahu, pak je přímo v rámci Plugin Territory. Tento seznam je dlouhý:
wp_head
obsah, jako jsou kanonické odkazy, generátor a další meta HTML, atd.)Pokud je funkce příbuzná k prezentace obsahu, pak je to kandidát pro zahrnutí do tématu. V tomto okamžiku bych se vrátil k @ Raf912 tématu Theme-switch kritériu : vynechali byste funkci při přepínání témat? Pokud je odpověď na tuto otázku no , pak funkce patří do tématu. Nějaké příklady:
add_theme_support()
(předpokládám, že tento by měl být zřejmý)Tyto dvě otázky obvykle poskytují poměrně jasnou linii diferenciace; existují však výjimky.
Typy vlastních příspěvků, například, jsou trochu jedinečným hybridem generování a prezentace obsahu, vzhledem k tomu, jak funguje hierarchie šablon pro stránky s jedním typem archivovat index a jednotlivé stránky příspěvků . Aspekty generování obsahu CPT by normálně umístily je přímo na Plugin území; Pluginy však nemohou definovat stránky šablon, které neodmyslitelně zapadají do návrhu/rozvržení/stylu pro dané téma (zejména pokud CPT zobrazuje jiné než obvyklé názvy/obsah/meta nebo má k nim přiřazené vlastní taxonomie).
Dlouhodobým řešením tohoto rozdílu, IMHO, je mít standardní úmluvu/konsenzus pro definici CPT pro daný typ obsahu (výpisy nemovitostí, události kalendáře, produkty elektronického obchodu, záznamy v knihovně/médiích atd.). .). Takto vytvořený obsah by zůstal přenosný mezi tématy, která implementují definici standardu/konvence dané CPT, zatímco vývojáři motivů si ponechávají flexibilitu při definování návrhu/rozvržení/stylu dané CPT v souborech šablony motivů.
Podobně bych normálně říkal, že sociální mediální profily, ave se stávají všudypřítomnými v současných tématech, jsou Plugin Territory, protože nemají nic společného s prezentaceobsahu. Nejlepší řešení by bylo, kdyby tyto profily byly definovány někde v jádru; v současné době však neexistuje žádný standardní/konsenzuální způsob definování těchto vazeb. Jsou nejlépe definovány na úrovni nastavení webu nebo na základě jednotlivých uživatelů? Pokud se uživatel, který uživatel meta dostane vystaven v šabloně? atd.
Znovu, dlouhodobě, řešení této disparity je pro jedno jádro definovat kde tyto odkazy jsou definovány, nebo jinak pro komunitu vývojáře tématu vyvinout jeho vlastní konsensus. Mezitím pro to není nic, ale udržet je v každém tématu.
Snadný test, kde je kód nejlépe umístěn:
chybí vám funkce, je blog není správné práce nebo fragmenty starého tématu (např. shortcodes) jsou ponechány?
ano: vložte jej do pluginu
no: nechte to ve function.php
Příklady: Napište krátký kód. Po přepnutí motivu zůstanou ve vašich příspěvcích prosté zkratky. Tak to bude lepší umístit do pluginu.
Napište funkci pro zobrazení posledních komentářů. Po přepnutí tématu je vše v pořádku, protože jiné téma má ekvivalentní funkci.
To opravdu záleží na kódu a co bude dělat. Některý kód ovlivňuje pouze styl nebo obsah motivu, jiné upravují příspěvky blogu.
Nemyslím si, že na tuto otázku je snadná odpověď, ale vsadím se, že bychom mohli udělat vývojový diagram, který nám pomůže s rozhodnutím. Zde je hrubý nástin takového vývojového diagramu, který může a měl by být rozšířen. Komentář s návrhy!
Odtud Témata VS Pluginy
Přidat vlastní kód podřízený motiv, takže při aktualizaci nadřazeného motivu vlastní kód není ztracena.
Můžete také vytvořit plugin pro konkrétní web, který obsahuje také všechny vaše vlastní kódy.
Co se týče psaní kódu versus pluginy, můžete použít pluginy a funkce, ale pro většinu toho, co chcete, ruční kódování je nejlepší, protože je jednodušší jej modifikovat, s výjimkou některých případů, jako jsou meta boxy, kde můžete zvážit použití pluginu, pokud se je vývojář motivů.
function modify_contact_methods($profile_fields) {
// Add new fields
$profile_fields['Twitter'] = 'Twitter Username';
$profile_fields['facebook'] = 'Facebook URL';
$profile_fields['gplus'] = 'Google+ URL';
return $profile_fields;
}
add_filter('user_contactmethods', 'modify_contact_methods');
http://codex.wordpress.org/Plugin_API/Filter_Reference/user_contactmethods
Vím, že je to mrtvý kůň a ten Chip to do značné míry pokryl, ale chtěl přidat pár myšlenek.
Pokud si žijete programování a ocitnete se pracuje na wordpress stránky v termínech, budete zjistit, že to opravdu přijde na čas.
Více často než ne, a to zejména pro ty, kteří právě začínají, je mnohem rychlejší a jednodušší jednoduše přidat vše, co potřebujete, do tématu a zavolat.
To je řečeno, pokud pracujete na wordpress na polo pravidelném základě, měli byste vážně zvážit následující :
To by mělo zvládnout vše, co budete obvykle potřebovat s pluginem, včetně aktivace, deaktivace, aktualizace verzí, sestavování panelů administrátorů a odinstalace.
Pokud to uděláte, najdete:
Nyní můžete stavět věci správně a dostat budoucí projekty rychleji.
To by mělo zvládnout vše, co je v motivu běžně potřeba:
Jakmile to uděláte, sestavte si dětskou tématickou kostru, která používá vaše primární téma.
Jakmile budete mít tyto dvě věci hotové, vytváření nových stránek pro lidi se stává mnohem rychlejší.
Pokud to provedete výše, můžete pracovat s následujícími možnostmi:
A pokud uděláte všechny výše uvedené , zjistíte, že Chipova odpověď bude nejen ideální, ale bude i optimální.
Jednoduchá odpověď zní:.
Je kód závislý na některé z funkcí zabudovaných do určitého tématu? Pokud ano, pak do tématu.
Chcete, aby tento kód byl přenosný mezi weby a mezi tématy? Pokud ano, pak vložte plugin.
Pokud je odpověď ne na obě výše uvedené, pak obrázek 5 let v budoucnu, kdy je čas na redesign. Je funkce kódu, který píšete, něco, co přežije další aktualizaci návrhu? Pokud ano, vložte do pluginu.
Také pokud nepoužíváte dětské motivy a plánujete aktualizovat téma, doporučuji také použít plugin.