SlideShare una empresa de Scribd logo
1 de 15
Custom Layouts Without
            Using Page Templates
                                    Chip Bennett (@chip_bennett)




WordCamp Nashville 2013, 20 April 2013         Page 1 of 15   Custom Layouts Without Using Page Templates
Overview
        •      What's the problem?
                 o     Custom Content, Custom Layouts
                 o     How to Have Both
        •      Process
                 o     Define Post Custom Meta Data
                 o     Modify Template Files
                 o     Define CSS
        •      Putting it into Practice
                 o     Twenty Twelve Child Theme
        •      Out of Presentation Scope
                 o     Post Custom Meta Implementation
WordCamp Nashville 2013, 20 April 2013    Page 2 of 15   Custom Layouts Without Using Page Templates
What's the Problem?
        •      Purpose of Custom Page Templates
                o    Custom content!
                o    Archives
                o    Linkroll
                o    Sitemap
                o    Contact form
                o    Custom queries

        •      Most Common use of Custom Page Templates
                o    Layouts
                o    Full Width
                o    Different Sidebars
                o    Etc.
WordCamp Nashville 2013, 20 April 2013    Page 3 of 15   Custom Layouts Without Using Page Templates
What's the Problem?
        •     Custom Page Templates for both custom content and custom
              layout?
               o    More templates?
               o    Sitemap,
               o    Sitemap Full-Width,
               o    Sitemap Three-Column
               o    Archives,
               o    Archives Full-Width,
               o    Archives Three-Column
               o    Linkroll,
               o    Linkroll Full-Width,
               o    Linkroll Three-Column

        •     See where this is going?
WordCamp Nashville 2013, 20 April 2013      Page 4 of 15   Custom Layouts Without Using Page Templates
Alternative: Custom Post Meta Data
        •      Benefits
                o     Per-page
                o     Regardless of Page Template
                o     Page template itself is custom post meta data
                o     _wp_page_template

        •      Extra Benefits?
                o     Can be made to work with (almost) any Theme
                o     Via Child Theme, Some coding/CSS required
                o     Expand to other post-types
                o     Blog Posts, Attachments, Custom Post Types
                o     Plugin-defined page templates
                o     Expand/Dovetail with default layout options
WordCamp Nashville 2013, 20 April 2013        Page 5 of 15          Custom Layouts Without Using Page Templates
Implementation
        •       Define Layout Custom Post Meta Data
                 o      Default layout is two-column
                 o      Add a "Full Width" layout option
        •       Modify Template According to Layout
                 o      Full Width layout removes the sidebar
                 o      Content takes up resultant space
        •       Modify CSS According to Layout
                 o      Modify main-content width CSS rule



WordCamp Nashville 2013, 20 April 2013      Page 6 of 15        Custom Layouts Without Using Page Templates
Define Layout Custom Post Meta
        •       Recommended Nomenclature:
                _themename_layout
                 o      Underscore: hide from custom fields UI
                 o      Namespacing: avoid conflicts, per-Theme
        •       Reminder:
                 o      Custom Post Meta code is out of presentation scope
                 o      Working example will be provided




WordCamp Nashville 2013, 20 April 2013     Page 7 of 15     Custom Layouts Without Using Page Templates
Custom Function to Get Layout
        •       Define a function to get the current layout
                        function themename_get_layout() {
                           $layout = 'default';
                           global $post;
                           $post_layout = get_post_meta( $post->ID,
                        '_themename_layout', true );
                           if ( '' != $post_layout ) {
                               $layout = $post_layout;
                           }
                            return $layout;
                        }

        •       We'll use this in a couple places, so DRY


WordCamp Nashville 2013, 20 April 2013      Page 8 of 15     Custom Layouts Without Using Page Templates
Modify the Template
        •       Typical template file:
                        <?php
                        // Header
                        get_header();
                        // Loop
                        get_template_part( 'loop' );
                        // Sidebar
                        get_sidebar();
                        // Footer
                        get_footer();
                        ?>

        •       index.php, archive.php, etc.
        •       Child Theme: let's just modify sidebar.php
WordCamp Nashville 2013, 20 April 2013      Page 9 of 15   Custom Layouts Without Using Page Templates
Modify the Template
        •       Modifying sidebar.php
                 o      Before:
                                 <?php
                                 // Sidebar HTML Markup & PHP code
                                 ?>
                 o      After:
                                 <?php
                                 if ( 'full' == themename_get_layout() ) {
                                    return;
                                 }
                                 // Sidebar HTML Markup & PHP code
                                 ?>

        •       Adapt as needed
WordCamp Nashville 2013, 20 April 2013           Page 10 of 15       Custom Layouts Without Using Page Templates
Modify CSS
        •       Add Layout-Based Classes to <body> tag
                 o      Use body_class filter:
                        function themename_filter_body_class( $classes ) {
                           $classes[] = 'layout-' . themename_get_layout();
                           return $classes;
                        }
                        add_filter( 'body_class',
                        'themename_filter_body_class' );

        •       Result:
                        <body class="page template-default layout-full ...">

        •       Child Theme: add layout-based CSS rules:
                        body.layout-full #content {
                           width: 100%;
                        }
WordCamp Nashville 2013, 20 April 2013      Page 11 of 15      Custom Layouts Without Using Page Templates
Practical Exercise: Twenty Twelve
        •       Let's see an example
        •       Add custom layouts to Twenty Twelve
        •       Via Child Theme
        •       Child Theme Files
                 o      style.css
                 o      functions.php
                 o      sidebar.php




WordCamp Nashville 2013, 20 April 2013   Page 12 of 15   Custom Layouts Without Using Page Templates
Twenty Twelve Live
            Example
                      (Child Theme is available for download)




WordCamp Nashville 2013, 20 April 2013   Page 13 of 15   Custom Layouts Without Using Page Templates
Links and Resources
        •      Downloads
                 o     WCNash13 TwentyTwelve Child Theme
                 o     http://github.com/chipbennett/wcnash13-twentytwelve-child
                 o     Oenology Theme (advanced layout example)
                 o     http://github.com/chipbennett/oenology

        •      Codex References
                 o     http://codex.wordpress.org/Pages#Page_Templates
                 o     http://codex.wordpress.org/Function_Reference/get_post_meta
                 o     http://codex.wordpress.org/Function_Reference/update_post_meta
                 o     http://codex.wordpress.org/Function_Reference/add_meta_box
                 o     http://codex.wordpress.org/Plugin_API/Filter_Reference/body_class

        •      Presentation Slides
                 o     http://www.slideshare.net/chipbennett
WordCamp Nashville 2013, 20 April 2013              Page 14 of 15           Custom Layouts Without Using Page Templates
Feedback
        •       Questions or comments?




WordCamp Nashville 2013, 20 April 2013   Page 15 of 15   Custom Layouts Without Using Page Templates

Más contenido relacionado

Similar a WordCamp Nashville 2013 - Custom Layouts Without Custom Page Templates

WordCamp Columbus 2013: Custom Layouts Without Using Page Templates
WordCamp Columbus 2013: Custom Layouts Without Using Page TemplatesWordCamp Columbus 2013: Custom Layouts Without Using Page Templates
WordCamp Columbus 2013: Custom Layouts Without Using Page TemplatesChip Bennett
 
How To Choose A Theme
How To Choose A ThemeHow To Choose A Theme
How To Choose A ThemeNicky Pink
 
Drupaldelphia Shortcuts Cheats And Cheap Stunts
Drupaldelphia  Shortcuts Cheats And Cheap StuntsDrupaldelphia  Shortcuts Cheats And Cheap Stunts
Drupaldelphia Shortcuts Cheats And Cheap Stuntscanarymason
 
Drupal 8 theming deep dive
Drupal 8 theming deep diveDrupal 8 theming deep dive
Drupal 8 theming deep diveRomain Jarraud
 
WordPress Theming Best Practices
WordPress Theming Best PracticesWordPress Theming Best Practices
WordPress Theming Best PracticesBrian Krogsgard
 
Drupal 7 Search Engine Optimisation
Drupal 7 Search Engine OptimisationDrupal 7 Search Engine Optimisation
Drupal 7 Search Engine OptimisationPeter Macinkovic
 
Writing an extensible web testing framework ready for the cloud slide share
Writing an extensible web testing framework ready for the cloud   slide shareWriting an extensible web testing framework ready for the cloud   slide share
Writing an extensible web testing framework ready for the cloud slide shareMike Ensor
 
Getting Started With WordPress Themes for Beginners
Getting Started With WordPress Themes for BeginnersGetting Started With WordPress Themes for Beginners
Getting Started With WordPress Themes for BeginnersNew Tricks
 
Theme frameworks & child themes
Theme frameworks & child themesTheme frameworks & child themes
Theme frameworks & child themesChris Olbekson
 
New Adventures in Drupal Theming
New Adventures in Drupal ThemingNew Adventures in Drupal Theming
New Adventures in Drupal ThemingJohn Albin Wilkins
 
Child Theme Frameworks
Child Theme FrameworksChild Theme Frameworks
Child Theme Frameworksryngrn
 
Getting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundationGetting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundationMelanie Archer
 
Keeping Your Themes and Plugins Organized.
Keeping Your Themes and Plugins Organized.Keeping Your Themes and Plugins Organized.
Keeping Your Themes and Plugins Organized.Jacob Martella
 
WordPress: After The Install
WordPress: After The InstallWordPress: After The Install
WordPress: After The InstallWordPress NYC
 
Developing Custom WordPress Themes for Clients
Developing Custom WordPress Themes for ClientsDeveloping Custom WordPress Themes for Clients
Developing Custom WordPress Themes for ClientsSteven Slack
 
Drupal8 themingdeepdive drupaldevdays-montpellier17042015
Drupal8 themingdeepdive drupaldevdays-montpellier17042015Drupal8 themingdeepdive drupaldevdays-montpellier17042015
Drupal8 themingdeepdive drupaldevdays-montpellier17042015Romain Jarraud
 

Similar a WordCamp Nashville 2013 - Custom Layouts Without Custom Page Templates (20)

WordCamp Columbus 2013: Custom Layouts Without Using Page Templates
WordCamp Columbus 2013: Custom Layouts Without Using Page TemplatesWordCamp Columbus 2013: Custom Layouts Without Using Page Templates
WordCamp Columbus 2013: Custom Layouts Without Using Page Templates
 
Efficient theming in Drupal
Efficient theming in DrupalEfficient theming in Drupal
Efficient theming in Drupal
 
How To Choose A Theme
How To Choose A ThemeHow To Choose A Theme
How To Choose A Theme
 
Drupaldelphia Shortcuts Cheats And Cheap Stunts
Drupaldelphia  Shortcuts Cheats And Cheap StuntsDrupaldelphia  Shortcuts Cheats And Cheap Stunts
Drupaldelphia Shortcuts Cheats And Cheap Stunts
 
Drupal 8 theming deep dive
Drupal 8 theming deep diveDrupal 8 theming deep dive
Drupal 8 theming deep dive
 
WordPress Theming Best Practices
WordPress Theming Best PracticesWordPress Theming Best Practices
WordPress Theming Best Practices
 
Drupal 7 Search Engine Optimisation
Drupal 7 Search Engine OptimisationDrupal 7 Search Engine Optimisation
Drupal 7 Search Engine Optimisation
 
Writing an extensible web testing framework ready for the cloud slide share
Writing an extensible web testing framework ready for the cloud   slide shareWriting an extensible web testing framework ready for the cloud   slide share
Writing an extensible web testing framework ready for the cloud slide share
 
Getting Started With WordPress Themes for Beginners
Getting Started With WordPress Themes for BeginnersGetting Started With WordPress Themes for Beginners
Getting Started With WordPress Themes for Beginners
 
Nanocon Taiwan
Nanocon TaiwanNanocon Taiwan
Nanocon Taiwan
 
Theme frameworks & child themes
Theme frameworks & child themesTheme frameworks & child themes
Theme frameworks & child themes
 
New Adventures in Drupal Theming
New Adventures in Drupal ThemingNew Adventures in Drupal Theming
New Adventures in Drupal Theming
 
Forensic Theming for Drupal
Forensic Theming for DrupalForensic Theming for Drupal
Forensic Theming for Drupal
 
Child Theme Frameworks
Child Theme FrameworksChild Theme Frameworks
Child Theme Frameworks
 
Getting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundationGetting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundation
 
Forensic Theming - DrupalCon London
Forensic Theming - DrupalCon LondonForensic Theming - DrupalCon London
Forensic Theming - DrupalCon London
 
Keeping Your Themes and Plugins Organized.
Keeping Your Themes and Plugins Organized.Keeping Your Themes and Plugins Organized.
Keeping Your Themes and Plugins Organized.
 
WordPress: After The Install
WordPress: After The InstallWordPress: After The Install
WordPress: After The Install
 
Developing Custom WordPress Themes for Clients
Developing Custom WordPress Themes for ClientsDeveloping Custom WordPress Themes for Clients
Developing Custom WordPress Themes for Clients
 
Drupal8 themingdeepdive drupaldevdays-montpellier17042015
Drupal8 themingdeepdive drupaldevdays-montpellier17042015Drupal8 themingdeepdive drupaldevdays-montpellier17042015
Drupal8 themingdeepdive drupaldevdays-montpellier17042015
 

Último

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Último (20)

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

WordCamp Nashville 2013 - Custom Layouts Without Custom Page Templates

  • 1. Custom Layouts Without Using Page Templates Chip Bennett (@chip_bennett) WordCamp Nashville 2013, 20 April 2013 Page 1 of 15 Custom Layouts Without Using Page Templates
  • 2. Overview • What's the problem? o Custom Content, Custom Layouts o How to Have Both • Process o Define Post Custom Meta Data o Modify Template Files o Define CSS • Putting it into Practice o Twenty Twelve Child Theme • Out of Presentation Scope o Post Custom Meta Implementation WordCamp Nashville 2013, 20 April 2013 Page 2 of 15 Custom Layouts Without Using Page Templates
  • 3. What's the Problem? • Purpose of Custom Page Templates o Custom content! o Archives o Linkroll o Sitemap o Contact form o Custom queries • Most Common use of Custom Page Templates o Layouts o Full Width o Different Sidebars o Etc. WordCamp Nashville 2013, 20 April 2013 Page 3 of 15 Custom Layouts Without Using Page Templates
  • 4. What's the Problem? • Custom Page Templates for both custom content and custom layout? o More templates? o Sitemap, o Sitemap Full-Width, o Sitemap Three-Column o Archives, o Archives Full-Width, o Archives Three-Column o Linkroll, o Linkroll Full-Width, o Linkroll Three-Column • See where this is going? WordCamp Nashville 2013, 20 April 2013 Page 4 of 15 Custom Layouts Without Using Page Templates
  • 5. Alternative: Custom Post Meta Data • Benefits o Per-page o Regardless of Page Template o Page template itself is custom post meta data o _wp_page_template • Extra Benefits? o Can be made to work with (almost) any Theme o Via Child Theme, Some coding/CSS required o Expand to other post-types o Blog Posts, Attachments, Custom Post Types o Plugin-defined page templates o Expand/Dovetail with default layout options WordCamp Nashville 2013, 20 April 2013 Page 5 of 15 Custom Layouts Without Using Page Templates
  • 6. Implementation • Define Layout Custom Post Meta Data o Default layout is two-column o Add a "Full Width" layout option • Modify Template According to Layout o Full Width layout removes the sidebar o Content takes up resultant space • Modify CSS According to Layout o Modify main-content width CSS rule WordCamp Nashville 2013, 20 April 2013 Page 6 of 15 Custom Layouts Without Using Page Templates
  • 7. Define Layout Custom Post Meta • Recommended Nomenclature: _themename_layout o Underscore: hide from custom fields UI o Namespacing: avoid conflicts, per-Theme • Reminder: o Custom Post Meta code is out of presentation scope o Working example will be provided WordCamp Nashville 2013, 20 April 2013 Page 7 of 15 Custom Layouts Without Using Page Templates
  • 8. Custom Function to Get Layout • Define a function to get the current layout function themename_get_layout() { $layout = 'default'; global $post; $post_layout = get_post_meta( $post->ID, '_themename_layout', true ); if ( '' != $post_layout ) { $layout = $post_layout; } return $layout; } • We'll use this in a couple places, so DRY WordCamp Nashville 2013, 20 April 2013 Page 8 of 15 Custom Layouts Without Using Page Templates
  • 9. Modify the Template • Typical template file: <?php // Header get_header(); // Loop get_template_part( 'loop' ); // Sidebar get_sidebar(); // Footer get_footer(); ?> • index.php, archive.php, etc. • Child Theme: let's just modify sidebar.php WordCamp Nashville 2013, 20 April 2013 Page 9 of 15 Custom Layouts Without Using Page Templates
  • 10. Modify the Template • Modifying sidebar.php o Before: <?php // Sidebar HTML Markup & PHP code ?> o After: <?php if ( 'full' == themename_get_layout() ) { return; } // Sidebar HTML Markup & PHP code ?> • Adapt as needed WordCamp Nashville 2013, 20 April 2013 Page 10 of 15 Custom Layouts Without Using Page Templates
  • 11. Modify CSS • Add Layout-Based Classes to <body> tag o Use body_class filter: function themename_filter_body_class( $classes ) { $classes[] = 'layout-' . themename_get_layout(); return $classes; } add_filter( 'body_class', 'themename_filter_body_class' ); • Result: <body class="page template-default layout-full ..."> • Child Theme: add layout-based CSS rules: body.layout-full #content { width: 100%; } WordCamp Nashville 2013, 20 April 2013 Page 11 of 15 Custom Layouts Without Using Page Templates
  • 12. Practical Exercise: Twenty Twelve • Let's see an example • Add custom layouts to Twenty Twelve • Via Child Theme • Child Theme Files o style.css o functions.php o sidebar.php WordCamp Nashville 2013, 20 April 2013 Page 12 of 15 Custom Layouts Without Using Page Templates
  • 13. Twenty Twelve Live Example (Child Theme is available for download) WordCamp Nashville 2013, 20 April 2013 Page 13 of 15 Custom Layouts Without Using Page Templates
  • 14. Links and Resources • Downloads o WCNash13 TwentyTwelve Child Theme o http://github.com/chipbennett/wcnash13-twentytwelve-child o Oenology Theme (advanced layout example) o http://github.com/chipbennett/oenology • Codex References o http://codex.wordpress.org/Pages#Page_Templates o http://codex.wordpress.org/Function_Reference/get_post_meta o http://codex.wordpress.org/Function_Reference/update_post_meta o http://codex.wordpress.org/Function_Reference/add_meta_box o http://codex.wordpress.org/Plugin_API/Filter_Reference/body_class • Presentation Slides o http://www.slideshare.net/chipbennett WordCamp Nashville 2013, 20 April 2013 Page 14 of 15 Custom Layouts Without Using Page Templates
  • 15. Feedback • Questions or comments? WordCamp Nashville 2013, 20 April 2013 Page 15 of 15 Custom Layouts Without Using Page Templates