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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
210
Other Decks in Technology
See All in Technology
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.5k
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
990
range over func 2年間の軌跡 Issue #56413 はGoのエコシステムをどう変えたか
ryujicre8ive
0
110
Claude Code本って、 読む必要あるの?
oikon48
2
430
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
250
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
200
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
280
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
160
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
150
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
120
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
170
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
5
2.1k
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
900
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
270
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
The Cost Of JavaScript in 2023
addyosmani
55
10k
The SEO Collaboration Effect
kristinabergwall1
1
550
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Facilitating Awesome Meetings
lara
57
7.1k
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