SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
EigeneThemes from Scratch
Stefan Fröhlich	
!
WordCamp Berlin 2015
Stefan Fröhlich
• 1984: Basic und 6510-Assembler mit C-64	
• seit 1995 freiberuflicher Entwickler	
• seit 2012:WordPress	
• anfangs Anpassung vonThemes und Plugins	
• nach kurzer Zeit ausschließlich Entwicklung
kundenspezifischerThemes	
• Administrator etlicher WP-Installationen



stefan@froehlich.it
Wozu ein eigenesTheme?
„Premium“-Themes und Frameworks
• unnötige Funktionalität und Code	
• wichtige Projektanforderungen fehlen	
• ergänzende Plugins haben häufig dieselben Probleme:

viele Optionen, aber nicht die erforderlichen
• aufgeblähter Code	
• viele CSS- und JS-Dateien
PageSpeed-Ergebnis
• Out of the box: eher unerfreulich	
• Abhilfe: 

entsprechendes Hosting (Kosten/ Administration) 

oder 

Plugins (funktioniert oft nicht) 

oder 

Aufwand für Optimierung
Günstiger Preis, aber zusätzliche Kosten
• unnötige Features entfernen	
• erforderliche Features implementieren	
• Anpassungen an Design oder Corporate Identity des Kunden	
• Bugfixing	
• zusätzlicherTestaufwand durch Bugfixing und CSS-Anpassung
Sicherheit
• beliebteThemes haben auch beliebte
Sicherheitslücken	
• Sicherheitslücken der in dasTheme
integrierten Plugins	
• Kein Problem, wenn regelmäßig alles
aktualisiert wird, aber die Praxis sieht
oft anders aus.
EigenesTheme
Individuelles Design - 

nicht von der Stange
• Genau die gewünschte Funktionalität - nicht zuviel, nicht zuwenig	
• Übersichtliches Backend, das ebenfalls den Kundenwünschen
entsprechend aufgebaut ist
• Keine bekannten Sicherheitslücken	
• Schlanker Code	
• bessere Performance	
• weniger CSS- und JS-Dateien
Anatomie einesThemes
Theme-Verzeichnis
• Neues, leeresVerzeichnis:

…/wp-content/themes/from_scratch
style.css
/* LICENSE & DETAILS!
==================================================!
!
! Theme Name: Eigenes Theme from Scratch!
! Theme URI: http://www.froehlich.it!
! Description: Demo-Theme für WordCamp Berlin 2015!
! Version: 0.1!
! Author: Stefan Fröhlich!
! Author URI: http://www.froehlich.it!
! License: GNU General Public License v2 or later!
! License URI: http://www.gnu.org/licenses/gpl-2.0.html!
! Tags: bla, blub!
! Text Domain: from_scratch!
==================================================!
*/!
index.php + screenshot.png
<!-- Gibt es mindestens einen Beitrag? -->!
<?php if ( have_posts() ) : ?>!
!
! <!-- Dann alle Beiträge ausgeben: —>!
!
! /* DER LOOP */!
! <?php while ( have_posts() ) : the_post(); ?>!
!
! ! <article>!
! ! ! <header>!
! ! ! !
! ! ! ! <!-- Überschrift -->!
! ! ! ! <h1>!
! ! ! ! ! <a href="<?php the_permalink(); ?>">!
! ! ! ! ! ! <?php the_title(); ?>!
! ! ! ! ! </a>!
! ! ! ! </h1>!
! ! ! !
! ! ! </header>!
! ! ! !
! ! ! <!-- Inhalt -->!
! ! ! <?php the_content(); ?>!
!
! ! </article>!
!
! <?php endwhile; ?>!
!
<!-- Falls es keine Inhalte gibt -->!
!
<?php else : ?>!
!
! ! <p><?php _e( 'Nothing Found', ’from_scratch' ); ?></p>!
!
<?php endif; ?>
Header und Footer einbinden
<?php get_header(); ?>!
!
!
!
<!-- Gibt es mindestens einen Beitrag? -->!
<?php if ( have_posts() ) : ?>!
!
! ...!
!
<?php else : ?>!
!
! ! <p><?php _e( 'Nothing Found', ’from_scratch' ); ?></p>!
!
<?php endif; ?>!
!
!
!
!
<?php get_footer(); ?>!
• Header:Alles, was vor dem Loop
kommt, inklusive HTML-Header und
Navigation	
• Footer:Alles, was nach dem Loop
kommt. Inklusive Footer und
schließendes </body>-Tag usw.
header.php
<!DOCTYPE html>!
<html>!
<head>! !
! <meta charset="<?php bloginfo( 'charset' ); ?>">!
! <meta name="viewport" content="width=device-width">!
! !
! <link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" />!
!
! <?php wp_head(); ?>!
!
</head>!
<body>! !
! <nav class="navigation" role="navigation">!!
! ! <?php wp_nav_menu( array( 'theme_location' => 'mainmenu' ) );!?>! !
! </nav>!
footer.php
! ! <footer>!
! ! ! <strong>Footer:</strong> Unser eigenes Theme from Scratch!!
! ! </footer>!
!
! </div>!
! !
! <?php !
!
! ! wp_footer(); !
! ! !
! ?>!
! !
</body>!
</html>
WeitereTemplate-Dateien
• sidebar.php: Darstellung der Seitenleiste(n)	
• functions.php: Festlegen globaler Einstellungen, z.B. Skripts und Styles einbinden oder ausschließen	
• front-page.php: Startseite für „letzte Beiträge“ oder „statische Seite“	
• home.php: Startseite für „letzte Beiträge“	
• page.php:Template für die Darstellung von Seiten	
• single.php:Template für einzelner Beiträge	
• category.php, archive.php: Darstellung von Kategorieren / Archiven



Weiterführende Links:

https://developer.wordpress.org/themes/basics/template-hierarchy/

https://codex.wordpress.org/Theme_Development#Template_Files

Alternative Seiten-Templates
<?php !
!
/* !
* Template Name: Anderes Template!
*/!
!
get_header(); !
!
?>!
!
<?php while ( have_posts() ) : the_post(); ?>!
! <article>!
! ! <header>!
Weitere Komponenten
• Erweiterung durch Custom PostTypes und

Taxonomien	
• Erweiterung durch Custom Fields	
• Wie gewohnt beliebige Plugins
Custom PostTypes /Taxonomien
• Code	
• bequemer mit

https://generatewp.com/post-type/	
• beliebtes Plugin: 

https://wordpress.org/plugins/types/
Custom Fields
• Code	
• beliebtes Plugin: 

Advanced Custom Fields (Pro)

Tools für effizienten Workflow
Tools
• lokale Entwicklungsumgebung: Webserver + PHP + MySQL	
• Automatisierung mit grunt 	
• Versionsverwaltung und Deployment mit git
Lokale Entwicklungsumgebung
• Apache / nginx + PHP + MySQL (Mac / Unix / Linux)	
• MAMP: https://www.mamp.info (Windows / Mac)
Automatisierung mit grunt
Flaticons designed by Freepik
Versionierung mit git
• Versionskontrolle mit git dringendst zu empfehlen für jedes Projekt	
• öffentliche Projekte: https://github.com	
• vertrauliche Projekte: privates Repository, z.B. auf https://bitbucket.org
Deployment mit git
Fragen?
Vielen Dank und weiterhin viel Spaß auf dem WordCamp Berlin 2015 :-)	
!
Stefan Fröhlich	
stefan@froehlich.it

Weitere ähnliche Inhalte

Was ist angesagt?

Webentwicklung für das IPhone
Webentwicklung für das IPhoneWebentwicklung für das IPhone
Webentwicklung für das IPhonereinhardh
 
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwaltenSEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwaltenget on top gmbh
 
Christian heilmann html 5 - das web und der browser als platform
Christian heilmann   html 5 - das web und der browser als platformChristian heilmann   html 5 - das web und der browser als platform
Christian heilmann html 5 - das web und der browser als platformChristian Heilmann
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
WordPress- eine Einführung
WordPress- eine EinführungWordPress- eine Einführung
WordPress- eine EinführungJohannes Fruth
 
Arbeiten mit Childthemes
Arbeiten mit ChildthemesArbeiten mit Childthemes
Arbeiten mit ChildthemesKirstenSchelper
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012get on top gmbh
 
Wordpress für Profis
Wordpress für ProfisWordpress für Profis
Wordpress für ProfisAnika Erdmann
 
WordPress Multisite
WordPress MultisiteWordPress Multisite
WordPress MultisiteWalter Ebert
 
Andy bosch-jsf-javascript
Andy bosch-jsf-javascriptAndy bosch-jsf-javascript
Andy bosch-jsf-javascriptAndy Bosch
 
WordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenWordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenTorsten Landsiedel
 
201903 seo campixx ur ls komprimieren - slideshare
201903 seo campixx   ur ls komprimieren - slideshare201903 seo campixx   ur ls komprimieren - slideshare
201903 seo campixx ur ls komprimieren - slideshareVisionary Online Marketing
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007jan_mindmatters
 
Wordpress Template Workshop
Wordpress Template WorkshopWordpress Template Workshop
Wordpress Template Workshopphillipgroschup
 

Was ist angesagt? (17)

Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
Webentwicklung für das IPhone
Webentwicklung für das IPhoneWebentwicklung für das IPhone
Webentwicklung für das IPhone
 
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwaltenSEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
SEODay 2011 - Seitennetzwerk mit WordPress effizient aufbauen und verwalten
 
Christian heilmann html 5 - das web und der browser als platform
Christian heilmann   html 5 - das web und der browser als platformChristian heilmann   html 5 - das web und der browser als platform
Christian heilmann html 5 - das web und der browser als platform
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
Daisy
DaisyDaisy
Daisy
 
WordPress- eine Einführung
WordPress- eine EinführungWordPress- eine Einführung
WordPress- eine Einführung
 
Arbeiten mit Childthemes
Arbeiten mit ChildthemesArbeiten mit Childthemes
Arbeiten mit Childthemes
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
 
Wordpress für Profis
Wordpress für ProfisWordpress für Profis
Wordpress für Profis
 
WordPress Multisite
WordPress MultisiteWordPress Multisite
WordPress Multisite
 
Andy bosch-jsf-javascript
Andy bosch-jsf-javascriptAndy bosch-jsf-javascript
Andy bosch-jsf-javascript
 
WordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenWordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisieren
 
201903 seo campixx ur ls komprimieren - slideshare
201903 seo campixx   ur ls komprimieren - slideshare201903 seo campixx   ur ls komprimieren - slideshare
201903 seo campixx ur ls komprimieren - slideshare
 
Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007Rails i18n - Railskonferenz 2007
Rails i18n - Railskonferenz 2007
 
MPIPräsentation-1
MPIPräsentation-1MPIPräsentation-1
MPIPräsentation-1
 
Wordpress Template Workshop
Wordpress Template WorkshopWordpress Template Workshop
Wordpress Template Workshop
 

Andere mochten auch

Linked Data - Das Ende des Dokuments?
Linked Data - Das Ende des Dokuments?Linked Data - Das Ende des Dokuments?
Linked Data - Das Ende des Dokuments?Semantic Web Company
 
Le festival des oranges
Le festival des orangesLe festival des oranges
Le festival des orangesandreamoedo
 
Verzeichnis- und Dateinamen im Web
Verzeichnis- und Dateinamen im WebVerzeichnis- und Dateinamen im Web
Verzeichnis- und Dateinamen im Weblehrerfreund
 
PORTFOLIO - DORIS SHANGGUAN
PORTFOLIO - DORIS SHANGGUANPORTFOLIO - DORIS SHANGGUAN
PORTFOLIO - DORIS SHANGGUANDoris Shangguan
 
Informatique du ch'nord
Informatique du ch'nordInformatique du ch'nord
Informatique du ch'nordJacky Gelon
 
Guide pratique pour toute PME et TPE
Guide pratique pour toute PME et TPEGuide pratique pour toute PME et TPE
Guide pratique pour toute PME et TPE6rhcp
 
Promotionsvorhaben "Liquid Democracy"
Promotionsvorhaben "Liquid Democracy"Promotionsvorhaben "Liquid Democracy"
Promotionsvorhaben "Liquid Democracy"Anja Adler
 
Grece nous lui-devons_tout- http://www.projethomere.com
Grece nous lui-devons_tout- http://www.projethomere.comGrece nous lui-devons_tout- http://www.projethomere.com
Grece nous lui-devons_tout- http://www.projethomere.comHélène Kémiktsi
 
0u trouver de l'argent cp
0u trouver de l'argent cp0u trouver de l'argent cp
0u trouver de l'argent cpdesintocx
 
Jahreshauptversammlung 2015
Jahreshauptversammlung 2015Jahreshauptversammlung 2015
Jahreshauptversammlung 2015vfbsalzkotten
 
Emploi d'avenir
Emploi d'avenirEmploi d'avenir
Emploi d'avenirproetco
 
Saisonrückblick Social Media Recht re-publica 2012
Saisonrückblick Social Media Recht re-publica 2012Saisonrückblick Social Media Recht re-publica 2012
Saisonrückblick Social Media Recht re-publica 2012Henning Krieg
 
Contrat de generation
Contrat de generationContrat de generation
Contrat de generationproetco
 
Entreprise industrielle
Entreprise industrielleEntreprise industrielle
Entreprise industriellevincentOOL
 
Presentation krippendorf isolutions_kultur_pdf
Presentation krippendorf isolutions_kultur_pdfPresentation krippendorf isolutions_kultur_pdf
Presentation krippendorf isolutions_kultur_pdfJosua Regez
 
Thomas Keup - Auf dem Weg von 1.0 nach 2.0
Thomas Keup - Auf dem Weg von 1.0 nach 2.0Thomas Keup - Auf dem Weg von 1.0 nach 2.0
Thomas Keup - Auf dem Weg von 1.0 nach 2.0THOMAS KEUP
 
BrightTag: Webanalyse-Treffen Berlin (DAALA)
BrightTag: Webanalyse-Treffen Berlin (DAALA)BrightTag: Webanalyse-Treffen Berlin (DAALA)
BrightTag: Webanalyse-Treffen Berlin (DAALA)James Sandoval
 

Andere mochten auch (20)

Linked Data - Das Ende des Dokuments?
Linked Data - Das Ende des Dokuments?Linked Data - Das Ende des Dokuments?
Linked Data - Das Ende des Dokuments?
 
Le festival des oranges
Le festival des orangesLe festival des oranges
Le festival des oranges
 
Verzeichnis- und Dateinamen im Web
Verzeichnis- und Dateinamen im WebVerzeichnis- und Dateinamen im Web
Verzeichnis- und Dateinamen im Web
 
PORTFOLIO - DORIS SHANGGUAN
PORTFOLIO - DORIS SHANGGUANPORTFOLIO - DORIS SHANGGUAN
PORTFOLIO - DORIS SHANGGUAN
 
Informatique du ch'nord
Informatique du ch'nordInformatique du ch'nord
Informatique du ch'nord
 
Guide pratique pour toute PME et TPE
Guide pratique pour toute PME et TPEGuide pratique pour toute PME et TPE
Guide pratique pour toute PME et TPE
 
Promotionsvorhaben "Liquid Democracy"
Promotionsvorhaben "Liquid Democracy"Promotionsvorhaben "Liquid Democracy"
Promotionsvorhaben "Liquid Democracy"
 
Danses
DansesDanses
Danses
 
Grece nous lui-devons_tout- http://www.projethomere.com
Grece nous lui-devons_tout- http://www.projethomere.comGrece nous lui-devons_tout- http://www.projethomere.com
Grece nous lui-devons_tout- http://www.projethomere.com
 
0u trouver de l'argent cp
0u trouver de l'argent cp0u trouver de l'argent cp
0u trouver de l'argent cp
 
Jahreshauptversammlung 2015
Jahreshauptversammlung 2015Jahreshauptversammlung 2015
Jahreshauptversammlung 2015
 
Emploi d'avenir
Emploi d'avenirEmploi d'avenir
Emploi d'avenir
 
Saisonrückblick Social Media Recht re-publica 2012
Saisonrückblick Social Media Recht re-publica 2012Saisonrückblick Social Media Recht re-publica 2012
Saisonrückblick Social Media Recht re-publica 2012
 
Contrat de generation
Contrat de generationContrat de generation
Contrat de generation
 
Français v partiel 1
Français v partiel 1Français v partiel 1
Français v partiel 1
 
Entreprise industrielle
Entreprise industrielleEntreprise industrielle
Entreprise industrielle
 
Presentation krippendorf isolutions_kultur_pdf
Presentation krippendorf isolutions_kultur_pdfPresentation krippendorf isolutions_kultur_pdf
Presentation krippendorf isolutions_kultur_pdf
 
Recommandations déontologiques SVA+
Recommandations déontologiques SVA+Recommandations déontologiques SVA+
Recommandations déontologiques SVA+
 
Thomas Keup - Auf dem Weg von 1.0 nach 2.0
Thomas Keup - Auf dem Weg von 1.0 nach 2.0Thomas Keup - Auf dem Weg von 1.0 nach 2.0
Thomas Keup - Auf dem Weg von 1.0 nach 2.0
 
BrightTag: Webanalyse-Treffen Berlin (DAALA)
BrightTag: Webanalyse-Treffen Berlin (DAALA)BrightTag: Webanalyse-Treffen Berlin (DAALA)
BrightTag: Webanalyse-Treffen Berlin (DAALA)
 

Ähnlich wie Eigene Themes from Scratch

Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Daniel Havlik
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungFrank Schmittlein
 
Blank Template - less is more #jd13ch
Blank Template - less is more #jd13chBlank Template - less is more #jd13ch
Blank Template - less is more #jd13chAlexander Schmidt
 
WordPress Professional – SEO Campixx
WordPress Professional – SEO CampixxWordPress Professional – SEO Campixx
WordPress Professional – SEO CampixxSebastian Blum
 
Wordpress vs. Textpattern
Wordpress vs. TextpatternWordpress vs. Textpattern
Wordpress vs. Textpatternguestcb8462
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance ReloadedGregor Goldbach
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Railsgearwheeldotnet
 
Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)
Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)
Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)Developing UXD
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzVerein FM Konferenz
 
Wordpress Themes
Wordpress ThemesWordpress Themes
Wordpress Themesguestbce9cd
 
Nutze die Macht @ IKT-Forum 09 Linz
Nutze die Macht @ IKT-Forum 09 LinzNutze die Macht @ IKT-Forum 09 Linz
Nutze die Macht @ IKT-Forum 09 LinzEric Eggert
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
WordPress und die Sprachen
WordPress und die SprachenWordPress und die Sprachen
WordPress und die Sprachenfrankstaude
 

Ähnlich wie Eigene Themes from Scratch (20)

Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
 
PHP Sucks?!
PHP Sucks?!PHP Sucks?!
PHP Sucks?!
 
Gutenberg Theme Entwicklung leicht gemacht
Gutenberg Theme Entwicklung leicht gemachtGutenberg Theme Entwicklung leicht gemacht
Gutenberg Theme Entwicklung leicht gemacht
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
 
Blank Template - less is more #jd13ch
Blank Template - less is more #jd13chBlank Template - less is more #jd13ch
Blank Template - less is more #jd13ch
 
XHTML
XHTMLXHTML
XHTML
 
WordPress Professional – SEO Campixx
WordPress Professional – SEO CampixxWordPress Professional – SEO Campixx
WordPress Professional – SEO Campixx
 
Wordpress vs. Textpattern
Wordpress vs. TextpatternWordpress vs. Textpattern
Wordpress vs. Textpattern
 
Perl Renaissance Reloaded
Perl Renaissance ReloadedPerl Renaissance Reloaded
Perl Renaissance Reloaded
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Rails
 
Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)
Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)
Developing UXD: Workshop @ IAKonferenz 2014 (German/Deutsch)
 
Ruby on Rails SS09 06
Ruby on Rails SS09 06Ruby on Rails SS09 06
Ruby on Rails SS09 06
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian Schmitz
 
Wordpress Themes
Wordpress ThemesWordpress Themes
Wordpress Themes
 
Moderner Webentwicklungs-Workflow
Moderner Webentwicklungs-WorkflowModerner Webentwicklungs-Workflow
Moderner Webentwicklungs-Workflow
 
HTML5
HTML5HTML5
HTML5
 
Nutze die Macht @ IKT-Forum 09 Linz
Nutze die Macht @ IKT-Forum 09 LinzNutze die Macht @ IKT-Forum 09 Linz
Nutze die Macht @ IKT-Forum 09 Linz
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
HTML5-Features
HTML5-FeaturesHTML5-Features
HTML5-Features
 
WordPress und die Sprachen
WordPress und die SprachenWordPress und die Sprachen
WordPress und die Sprachen
 

Eigene Themes from Scratch

  • 1. EigeneThemes from Scratch Stefan Fröhlich ! WordCamp Berlin 2015
  • 2. Stefan Fröhlich • 1984: Basic und 6510-Assembler mit C-64 • seit 1995 freiberuflicher Entwickler • seit 2012:WordPress • anfangs Anpassung vonThemes und Plugins • nach kurzer Zeit ausschließlich Entwicklung kundenspezifischerThemes • Administrator etlicher WP-Installationen
 
 stefan@froehlich.it
  • 4. „Premium“-Themes und Frameworks • unnötige Funktionalität und Code • wichtige Projektanforderungen fehlen • ergänzende Plugins haben häufig dieselben Probleme:
 viele Optionen, aber nicht die erforderlichen
  • 5. • aufgeblähter Code • viele CSS- und JS-Dateien
  • 6. PageSpeed-Ergebnis • Out of the box: eher unerfreulich • Abhilfe: 
 entsprechendes Hosting (Kosten/ Administration) 
 oder 
 Plugins (funktioniert oft nicht) 
 oder 
 Aufwand für Optimierung
  • 7. Günstiger Preis, aber zusätzliche Kosten • unnötige Features entfernen • erforderliche Features implementieren • Anpassungen an Design oder Corporate Identity des Kunden • Bugfixing • zusätzlicherTestaufwand durch Bugfixing und CSS-Anpassung
  • 8. Sicherheit • beliebteThemes haben auch beliebte Sicherheitslücken • Sicherheitslücken der in dasTheme integrierten Plugins • Kein Problem, wenn regelmäßig alles aktualisiert wird, aber die Praxis sieht oft anders aus.
  • 10. Individuelles Design - 
 nicht von der Stange
  • 11. • Genau die gewünschte Funktionalität - nicht zuviel, nicht zuwenig • Übersichtliches Backend, das ebenfalls den Kundenwünschen entsprechend aufgebaut ist
  • 12. • Keine bekannten Sicherheitslücken • Schlanker Code • bessere Performance • weniger CSS- und JS-Dateien
  • 15.
  • 16. style.css /* LICENSE & DETAILS! ==================================================! ! ! Theme Name: Eigenes Theme from Scratch! ! Theme URI: http://www.froehlich.it! ! Description: Demo-Theme für WordCamp Berlin 2015! ! Version: 0.1! ! Author: Stefan Fröhlich! ! Author URI: http://www.froehlich.it! ! License: GNU General Public License v2 or later! ! License URI: http://www.gnu.org/licenses/gpl-2.0.html! ! Tags: bla, blub! ! Text Domain: from_scratch! ==================================================! */!
  • 17.
  • 18. index.php + screenshot.png <!-- Gibt es mindestens einen Beitrag? -->! <?php if ( have_posts() ) : ?>! ! ! <!-- Dann alle Beiträge ausgeben: —>! ! ! /* DER LOOP */! ! <?php while ( have_posts() ) : the_post(); ?>! ! ! ! <article>! ! ! ! <header>! ! ! ! ! ! ! ! ! <!-- Überschrift -->! ! ! ! ! <h1>! ! ! ! ! ! <a href="<?php the_permalink(); ?>">! ! ! ! ! ! ! <?php the_title(); ?>! ! ! ! ! ! </a>! ! ! ! ! </h1>! ! ! ! ! ! ! ! </header>! ! ! ! ! ! ! ! <!-- Inhalt -->! ! ! ! <?php the_content(); ?>! ! ! ! </article>! ! ! <?php endwhile; ?>! ! <!-- Falls es keine Inhalte gibt -->! ! <?php else : ?>! ! ! ! <p><?php _e( 'Nothing Found', ’from_scratch' ); ?></p>! ! <?php endif; ?>
  • 19. Header und Footer einbinden <?php get_header(); ?>! ! ! ! <!-- Gibt es mindestens einen Beitrag? -->! <?php if ( have_posts() ) : ?>! ! ! ...! ! <?php else : ?>! ! ! ! <p><?php _e( 'Nothing Found', ’from_scratch' ); ?></p>! ! <?php endif; ?>! ! ! ! ! <?php get_footer(); ?>! • Header:Alles, was vor dem Loop kommt, inklusive HTML-Header und Navigation • Footer:Alles, was nach dem Loop kommt. Inklusive Footer und schließendes </body>-Tag usw.
  • 20. header.php <!DOCTYPE html>! <html>! <head>! ! ! <meta charset="<?php bloginfo( 'charset' ); ?>">! ! <meta name="viewport" content="width=device-width">! ! ! ! <link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" type="text/css" />! ! ! <?php wp_head(); ?>! ! </head>! <body>! ! ! <nav class="navigation" role="navigation">!! ! ! <?php wp_nav_menu( array( 'theme_location' => 'mainmenu' ) );!?>! ! ! </nav>!
  • 21. footer.php ! ! <footer>! ! ! ! <strong>Footer:</strong> Unser eigenes Theme from Scratch!! ! ! </footer>! ! ! </div>! ! ! ! <?php ! ! ! ! wp_footer(); ! ! ! ! ! ?>! ! ! </body>! </html>
  • 22. WeitereTemplate-Dateien • sidebar.php: Darstellung der Seitenleiste(n) • functions.php: Festlegen globaler Einstellungen, z.B. Skripts und Styles einbinden oder ausschließen • front-page.php: Startseite für „letzte Beiträge“ oder „statische Seite“ • home.php: Startseite für „letzte Beiträge“ • page.php:Template für die Darstellung von Seiten • single.php:Template für einzelner Beiträge • category.php, archive.php: Darstellung von Kategorieren / Archiven
 
 Weiterführende Links:
 https://developer.wordpress.org/themes/basics/template-hierarchy/
 https://codex.wordpress.org/Theme_Development#Template_Files

  • 23. Alternative Seiten-Templates <?php ! ! /* ! * Template Name: Anderes Template! */! ! get_header(); ! ! ?>! ! <?php while ( have_posts() ) : the_post(); ?>! ! <article>! ! ! <header>!
  • 25. • Erweiterung durch Custom PostTypes und
 Taxonomien • Erweiterung durch Custom Fields • Wie gewohnt beliebige Plugins
  • 26. Custom PostTypes /Taxonomien • Code • bequemer mit
 https://generatewp.com/post-type/ • beliebtes Plugin: 
 https://wordpress.org/plugins/types/
  • 27. Custom Fields • Code • beliebtes Plugin: 
 Advanced Custom Fields (Pro)

  • 29. Tools • lokale Entwicklungsumgebung: Webserver + PHP + MySQL • Automatisierung mit grunt • Versionsverwaltung und Deployment mit git
  • 30. Lokale Entwicklungsumgebung • Apache / nginx + PHP + MySQL (Mac / Unix / Linux) • MAMP: https://www.mamp.info (Windows / Mac)
  • 33. Versionierung mit git • Versionskontrolle mit git dringendst zu empfehlen für jedes Projekt • öffentliche Projekte: https://github.com • vertrauliche Projekte: privates Repository, z.B. auf https://bitbucket.org
  • 35. Fragen? Vielen Dank und weiterhin viel Spaß auf dem WordCamp Berlin 2015 :-) ! Stefan Fröhlich stefan@froehlich.it