Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Jetpack for Theme Developers (wcmtl)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kelly Dwan
July 05, 2015
Technology
3.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jetpack for Theme Developers (wcmtl)
Kelly Dwan
July 05, 2015
More Decks by Kelly Dwan
See All by Kelly Dwan
React-ing to WordPress (WCNYC '16)
ryelle
1
870
Jetpack for Theme Developers
ryelle
2
220
Other Decks in Technology
See All in Technology
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
110
公共分野での生成AI活用
toru_kubota
1
190
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
3.1k
AI Agent 時代のデータ基盤: ClickHouse で実現する 超高速分析とコスト削減の両立
jozono
0
180
Don't write the architecture only in the prompt.
neohsu
0
310
Strands Decider 2BでAWSアップデートの目利きをしてみた
sato4mi
1
120
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
810
AWSを利用する上で知っておきたい名前解決の話 2026
nagisa53
4
2.4k
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
550
Consistency for mere mortals - A gentle guide to consistency
ufried
0
120
試験勉強はGrokBotでやれ
maigo999
0
110
自律的なチームを作るためにTechPMがやらないこと
ny7760
1
510
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Statistics for Hackers
jakevdp
799
230k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Designing Experiences People Love
moore
143
24k
Mind Mapping
helmedeiros
1
430
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
470
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
600
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
エンジニアに許された特別な時間の終わり
watany
109
250k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
300
Transcript
@ryelle #wcmtl JETPACK FOR DEVELOPERS
@ryelle #wcmtl WANT TO FOLLOW ALONG? http://redradar.net/wcmtl-2015
http://redradar.net/wcmtl-2015
@ryelle #wcmtl http://redradar.net/wcmtl-2015
None
@ryelle #wcmtl DEVELOPMENT ENVIRONMENT
</> JETPACK_DEV_DEBUG jetpack_development_mode wp-config.php or functions.php
@ryelle #wcmtl PROGRESSIVE ENHANCEMENT
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> add_theme_support( 'title-tag' ); $background = array( 'default-color' => '71af3a', ); add_theme_support( 'custom-background', $background ); add_theme_support
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $args = array( 'function' => 'prefix_my_function', ); add_theme_support( 'custom-feature', $args ); function prefix_my_function( $maybe_args ) { // Do some code here. // echo or return as needed. } callbacks
None
@ryelle #wcmtl INFINITE SCROLL
Museum
None
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'infinite-scroll', array( 'type' => 'click', 'container' => 'main', 'posts_per_page' => 12, 'footer' => 'page', 'render' => 'prefix_is_render', ) ); } function prefix_is_render() { // Only needed if your loop is different than while( have_posts() ) : the_post(); get_template_part( 'content', get_post_format() ); endwhile; } jetpack.php
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'infinite-scroll', array( 'type' => 'click', 'container' => 'main', 'posts_per_page' => 12, 'footer' => 'page', 'render' => 'prefix_is_render', ) ); } function prefix_is_render() { // Only needed if your loop is different than while( have_posts() ) : the_post(); get_template_part( 'content', get_post_format() ); endwhile; } jetpack.php
http://jetpack.me/support/infinite-scroll/
@ryelle #wcmtl FEATURED CONTENT
Twenty Fourteen
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'featured-content', array( 'filter' => 'prefix_get_featured_content', 'max_posts' => 6, 'post_types' => array( 'post' ), ) ); } function prefix_get_featured_posts(){ return apply_filters( 'prefix_get_featured_content', array() ); } jetpack.php
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'featured-content', array( 'filter' => 'prefix_get_featured_content', 'max_posts' => 6, 'post_types' => array( 'post' ), ) ); } function prefix_get_featured_posts(){ return apply_filters( 'prefix_get_featured_content', array() ); } jetpack.php
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $featured_posts = prefix_get_featured_posts(); foreach ( $featured_posts as $post ): setup_postdata( $post ); // Include the featured content template. get_template_part( 'content', 'featured' ); endforeach; wp_reset_postdata(); featured-content.php
http://jetpack.me/support/featured-content/
@ryelle #wcmtl PORTFOLIOS
None
None
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'jetpack-portfolio' ); } jetpack.php
None
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> <?php /** * Template Name: Portfolio Page Template * * @package illustratr */ …template code… portfolio-page.php Illustratr
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $posts_per_page = get_option( 'jetpack_portfolio_posts_per_page', '10' ); $args = array( 'post_type' => 'jetpack-portfolio', 'posts_per_page' => $posts_per_page, ); $project_query = new WP_Query( $args ); if ( post_type_exists( 'jetpack-portfolio' ) && $project_query->have_posts() ) : portfolio-page.php Illustratr
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $posts_per_page = get_option( 'jetpack_portfolio_posts_per_page', '10' ); $args = array( 'post_type' => 'jetpack-portfolio', 'posts_per_page' => $posts_per_page, ); $project_query = new WP_Query( $args ); if ( post_type_exists( 'jetpack-portfolio' ) && $project_query->have_posts() ) : portfolio-page.php Illustratr
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $posts_per_page = get_option( 'jetpack_portfolio_posts_per_page', '10' ); $args = array( 'post_type' => 'jetpack-portfolio', 'posts_per_page' => $posts_per_page, ); $project_query = new WP_Query( $args ); if ( post_type_exists( 'jetpack-portfolio' ) && $project_query->have_posts() ) : portfolio-page.php Illustratr
Illustratr
http://jetpack.me/support/custom-content-types/ https://en.support.wordpress.com/portfolios/ portfolio-shortcode/
@ryelle #wcmtl TESTIMONIALS
None
Sela
@ryelle #wcmtl RESTAURANT MENUS
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'nova_menu_item' ); } jetpack.php
None
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $loop = new WP_Query( [ 'post_type' => 'nova_menu_item' ] ); while ( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'content', 'menu' ); endwhile; // end of the Menu Item Loop wp_reset_postdata(); page-menu.php Confit
Confit
Confit
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> Nova_Restaurant::init( array( 'menu_tag' => 'section', 'menu_class' => 'menu-items', 'menu_header_tag' => 'header', 'menu_header_class' => 'menu-group-header', 'menu_title_tag' => 'h1', 'menu_title_class' => 'menu-group-title', 'menu_description_tag' => 'div', 'menu_description_class' => 'menu-group-description', ) ); page-menu.php Confit
/modules/custom-post-types/nova.php
@ryelle #wcmtl HIDDEN TREASURES
@ryelle #wcmtl SITE LOGO
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'site-logo', array( 'size' => 'full', )); } jetpack.php
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> if ( function_exists('jetpack_the_site_logo') ) { jetpack_the_site_logo(); } header.php
Cucina
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_site_logo( $html, $logo, $size ) { // do something with $html return $html; } add_filter( 'jetpack_the_site_logo', 'prefix_site_logo', 10, 3 ); jetpack.php
http://jetpack.me/support/site-logo/
@ryelle #wcmtl BREADCRUMBS
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> <?php if ( function_exists('jetpack_breadcrumbs') ) : ?> <div class="navigation"> <?php jetpack_breadcrumbs(); ?> </div><!-- .navigation --> <?php endif; ?> page.php
None
@ryelle #wcmtl CSS PROCESSING
Umbra
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> if ( ! class_exists( 'Jetpack_Custom_CSS' ) ) { require Jetpack::get_module_path( 'custom-css' ); } $color = get_query_var( 'prefix_color' ); $valid_color = preg_match( '/^[0-9a-f]{6}$/i', $color ); if ( ! $valid_color ) { die(); } $base_sass = file_get_contents('colors.scss'); $sass = '$base-color: #' . $color . '; ' . $base_sass; $css = Jetpack_Custom_CSS::minify( $sass, 'sass' ); header( 'Content-type: text/css; charset: UTF-8' ); echo $css; die(); dynamic-colors.php Umbra
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> if ( ! class_exists( 'Jetpack_Custom_CSS' ) ) { require Jetpack::get_module_path( 'custom-css' ); } $color = get_query_var( 'prefix_color' ); $valid_color = preg_match( '/^[0-9a-f]{6}$/i', $color ); if ( ! $valid_color ) { die(); } $base_sass = file_get_contents('colors.scss'); $sass = '$base-color: #' . $color . '; ' . $base_sass; $css = Jetpack_Custom_CSS::minify( $sass, 'sass' ); header( 'Content-type: text/css; charset: UTF-8' ); echo $css; die(); dynamic-colors.php Umbra
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> if ( ! class_exists( 'Jetpack_Custom_CSS' ) ) { require Jetpack::get_module_path( 'custom-css' ); } $color = get_query_var( 'prefix_color' ); $valid_color = preg_match( '/^[0-9a-f]{6}$/i', $color ); if ( ! $valid_color ) { die(); } $base_sass = file_get_contents('colors.scss'); $sass = '$base-color: #' . $color . '; ' . $base_sass; $css = Jetpack_Custom_CSS::minify( $sass, 'sass' ); header( 'Content-type: text/css; charset: UTF-8' ); echo $css; die(); dynamic-colors.php Umbra
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $base-hue: hue($base-color); $body-background: hsl( $base-hue, 0, 97% ); $text-color: hsl( $base-hue, 4%, 26% ); body { background: $body-background; } body, button, input, select, textarea { color: $text-color; } colors.scss Umbra
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> if ( ! class_exists( 'Jetpack_Custom_CSS' ) ) { require Jetpack::get_module_path( 'custom-css' ); } $color = get_query_var( 'prefix_color' ); $valid_color = preg_match( '/^[0-9a-f]{6}$/i', $color ); if ( ! $valid_color ) { die(); } $base_sass = file_get_contents('colors.scss'); $sass = '$base-color: #' . $color . '; ' . $base_sass; $css = Jetpack_Custom_CSS::minify( $sass, 'sass' ); header( 'Content-type: text/css; charset: UTF-8' ); echo $css; die(); dynamic-colors.php Umbra
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> if ( ! class_exists( 'Jetpack_Custom_CSS' ) ) { require Jetpack::get_module_path( 'custom-css' ); } $color = get_query_var( 'prefix_color' ); $valid_color = preg_match( '/^[0-9a-f]{6}$/i', $color ); if ( ! $valid_color ) { die(); } $base_sass = file_get_contents('colors.scss'); $sass = '$base-color: #' . $color . '; ' . $base_sass; $css = Jetpack_Custom_CSS::minify( $sass, 'sass' ); header( 'Content-type: text/css; charset: UTF-8' ); echo $css; die(); dynamic-colors.php Umbra
@ryelle #wcmtl TONESQUE
Umbra
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> function prefix_jetpack_setup(){ add_theme_support( 'tonesque' ); } functions.php
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $image_src = prefix_get_post_image( $post_id ); if ( ! $image_src ) { return false; } $image = new Tonesque( $image_src ); $color = $image->color(); dynamic-colors.php
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $image_src = prefix_get_post_image( $post_id ); if ( ! $image_src ) { return false; } $image = new Tonesque( $image_src ); $color = $image->color(); dynamic-colors.php
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $image_src = prefix_get_post_image( $post_id ); if ( ! $image_src ) { return false; } $image = new Tonesque( $image_src ); $color = $image->color(); dynamic-colors.php
Color Posts Plugin
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20 </> $image = new Tonesque( $image_src ); $background_color = $image->color(); $contrast = $image->contrast(); dynamic-colors.php
None
@ryelle #wcmtl KEEP IN MIND…
Contact forms Infinite Scroll button Sharing links Lovecraft
@ryelle #wcmtl QUESTIONS?
@ryelle #wcmtl THANKS! http://redradar.net/wcmtl-2015