SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Manipulando dados com o ACF
WordPress Meetup Rio de Janeiro
Novembro de 2018
Foto por Max Felner
Rudá Almeida
Integrante da equipe de Tecnologia da Informação da UFRJ
Entusiasta do WordPress e integrante da comunidade carioca
Palestrante, voluntário e co-organizador de Meetups e WordCamps
Manipulando dados com o ACF
WordPress Meetup Rio de Janeiro
Novembro de 2018
Como manipular dados
usando Advanced
Custom Fields
O que são dados?
Definição formal
“Informações descrevem um domínio
físico ou abstrato. Dado é tudo aquilo
que pode ser processado.”
Gadomski, 1993
Dados nativos no WordPress
Principais tipos de dados nativos
Tipos de publicações
● Posts
● Páginas
Principais tipos de dados nativos
Tipos de publicações
● Posts
● Páginas
Tipos de metadados
● Título
● Autor
● Data e hora de publicação
● Imagem de destaque
Dados nativos no WordPress
Os tipos de dados nativos que
o WordPress oferece por
padrão podem não ser os mais
adequados para o seu projeto.
Um exemplo
Tipo de conteúdo: Livro
● Título
● Autor
● Data de lançamento
● Imagem da capa
● Editora
● Tema
● Quantidade de páginas
● Peso
● Dimensões
● Arquivo de e-book
Tipo de conteúdo: Livro
● Título
● Autor
● Data de lançamento
● Imagem da capa
● Editora
● Tema
● Quantidade de páginas
● Peso
● Dimensões
● Arquivo de e-book
Dados nativos no WordPress
Tipos de publicações
● Posts
● Páginas
● Custom Post Types
Tipos de metadados
● Título
● Autor
● Data e hora de publicação
● Imagem de destaque
Dados nativos no WordPress
Tipos de publicações
● Posts
● Páginas
● Custom Post Types
Tipos de metadados
● Título
● Autor
● Data e hora de publicação
● Imagem de destaque
● Custom Fields
Custom Fields nativos
Custom fields nativos
Apesar do WordPress já oferecer a funcionalidade de campos
personalizados (custom fields) de forma nativa, seu uso é
complexo tanto para quem desenvolve o site quanto,
principalmente, para quem alimenta o conteúdo.
● Não é intuitivo
● Sujeito a erros
● Sem validação
● Somente texto / literal
● Apenas Posts e CPTs
● Sem condicionais
● Interface muito limitada
● Precisa ser ativado em
cada tipo de conteúdo
Obtendo o valor de um campo
Campos personalizados nativos
$meta = get_post_meta( get_the_ID() );
if (!empty($meta))
$campo = $meta['nome_do_campo'];
if (!empty($campo))
foreach($campo as $valor)
echo $valor;
// Outra maneira
$primeiro_valor = get_post_meta(
get_the_ID(), 'nome_do_campo', true );
Advanced custom fields
$valor = get_field( "nome_do_campo"
);
Criando opções do tema
Options API
add_action('admin_menu',
'option_page_servicos_externos');function
option_page_servicos_externos() { add_options_page( 'Serviços
externos', 'Serviços externos', 'edit_pages',
'servicos_externos', 'options_page'); add_action( 'admin_init',
'register_settings' );} function register_settings() {
register_setting( 'youtube_group', 'youtube_playlist_id' );
register_setting( 'youtube_group', 'youtube_channel_url' );}
function options_page() {?><div class="wrap"><h1>Vídeos do
YouTube</h1><form method="post" action="options.php"> <?php
settings_fields( 'youtube_group' ); ?> <?php
do_settings_sections( 'youtube_group' ); ?> <table
class="form-table"> <tr valign="top"> <th scope="row">ID da
Playlist</th> <td><input type="text" name="youtube_playlist_id"
value="<?php echo esc_attr( get_option('youtube_playlist_id') );
?>" /></td> </tr> <th scope="row">URL do canal</th> <td><input
type="text" name="youtube_channel_url" value="<?php echo
esc_attr( get_option('youtube_channel_url') ); ?>" /></td> </tr>
</table> <?php submit_button(); ?></form></div><?php }
Advanced custom fields
acf_add_options_page();
Advanced Custom Fields
Advanced Custom Fields
Advanced Custom Fields
permite manipular dados tanto através da
interface administrativa quanto de funções
em PHP de maneira simplificada,
agilizando o desenvolvimento e a
utilização da plataforma.
Advanced Custom Fields
A grosso modo, é quase um “builder” para
o painel do WordPress, criando nas telas
de composição de conteúdo áreas extras
onde serão encaixados blocos flexíveis e
de extensa personalização.
Tipos de campos do ACF
Tipos básicos
Múltipla escolha
Conteúdo
Conteúdo (cont.)
jQuery
Repetidor
Relacional
Validação
Validação no front-end
Validação no back-end
add_filter('acf/validate_value/name
=numero', function ($valid, $value,
$field, $input) {
if ($value%2)
return 'Somente números
pares!';
return $valid;
}, 10, 4);
Exibição condicional
Exibição condicional de um campo
Exibição condicional de um grupo
Versionamento
Versionando via PHP
if( function_exists('acf_add_local_field_group') ):
acf_add_local_field_group(array(
'key' => 'group_5bfc72339289b',
'title' => 'Básico',
'fields' => array(
array(
'key' => 'field_5bfc7393f71fb',
'label' => 'Área de Texto',
'name' => 'area_de_texto',
'type' => 'textarea',
'instructions' => '',
'required' => 0,
'conditional_logic' => 0,
'wrapper' => array(
'width' => '',
'class' => '',
'id' => '',
),
'default_value' => '',
'placeholder' => '',
'maxlength' => '',
'rows' => 3,
'new_lines' => '',
),
// (...)
Versionando via JSON
[
{
"key": "group_5bfc72339289b",
"title": "Básico",
"fields": [
{
"key": "field_5bfc7393f71fb",
"label": "Área de Texto",
"name": "area_de_texto",
"type": "textarea",
"instructions": "",
"required": 0,
"conditional_logic": 0,
"wrapper": {
"width": "",
"class": "",
"id": ""
},
"default_value": "",
"placeholder": "",
"maxlength": "",
"rows": 3,
"new_lines": ""
},
VAMOS VER NA PRÁTICA?
Observações
Nem tudo é perfeito...
● Funcionalidades como repetidor, galeria, página de opções e
conteúdo flexível são exclusividades da versão paga.
● A versão paga é barata, com licença vitalícia para sites ilimitados.
● O ACF é “apenas” um front-end para os custom fields nativos.
● Os dados não estão associados aos posts, e sim aos custom fields.
● Jamais altere o nome ou tipo dos campos quando já existe conteúdo,
ou estes dados serão perdidos >_<”
OBRIGADO!
“ONE LAST THING…”
PERGUNTAS?

Contenu connexe

Tendances

[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기
[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기
[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기WhaTap Labs
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture Mouna Maazoun
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례Amazon Web Services Korea
 
Infographie, Essentiel pour optimiser votre Profil LinkedIn
Infographie, Essentiel pour optimiser votre Profil LinkedInInfographie, Essentiel pour optimiser votre Profil LinkedIn
Infographie, Essentiel pour optimiser votre Profil LinkedInAXIZ eBusiness
 
003. Hyva Theme.pdf
003. Hyva Theme.pdf003. Hyva Theme.pdf
003. Hyva Theme.pdfIT Delight
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisantcluelessjoe
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBaseAmal Abid
 
AWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at NetflixAWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at NetflixAdrian Cockcroft
 
Deep Dive on Amazon EBS - AWS Online Tech Talks
Deep Dive on Amazon EBS - AWS Online Tech TalksDeep Dive on Amazon EBS - AWS Online Tech Talks
Deep Dive on Amazon EBS - AWS Online Tech TalksAmazon Web Services
 
Awskrug AWS SNS, SQS, and SES
Awskrug AWS SNS, SQS, and SESAwskrug AWS SNS, SQS, and SES
Awskrug AWS SNS, SQS, and SESJungHakLee4
 
Tp Sql Server Integration Services 2008
Tp  Sql Server Integration Services  2008Tp  Sql Server Integration Services  2008
Tp Sql Server Integration Services 2008Abdelouahed Abdou
 
Audit SEO : les clés de la réussite
Audit SEO : les clés de la réussiteAudit SEO : les clés de la réussite
Audit SEO : les clés de la réussiteDaniel Roch - SeoMix
 
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Web Design Proposal PowerPoint Presentation Slides
Web Design Proposal PowerPoint Presentation Slides Web Design Proposal PowerPoint Presentation Slides
Web Design Proposal PowerPoint Presentation Slides SlideTeam
 

Tendances (20)

[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기
[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기
[WhaTap DevOps Day] 세션 6 : 와탭랩스 DevOps 이야기
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
 
Ansible과 CloudFormation을 이용한 배포 자동화
Ansible과 CloudFormation을 이용한 배포 자동화Ansible과 CloudFormation을 이용한 배포 자동화
Ansible과 CloudFormation을 이용한 배포 자동화
 
Un introduction à Pig
Un introduction à PigUn introduction à Pig
Un introduction à Pig
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
 
Infographie, Essentiel pour optimiser votre Profil LinkedIn
Infographie, Essentiel pour optimiser votre Profil LinkedInInfographie, Essentiel pour optimiser votre Profil LinkedIn
Infographie, Essentiel pour optimiser votre Profil LinkedIn
 
Design pattern cheat sheet
Design pattern cheat sheetDesign pattern cheat sheet
Design pattern cheat sheet
 
003. Hyva Theme.pdf
003. Hyva Theme.pdf003. Hyva Theme.pdf
003. Hyva Theme.pdf
 
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
DDD, CQRS et Event Sourcing : quand coder propre n'est plus suffisant
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBase
 
AWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at NetflixAWS Re:Invent - High Availability Architecture at Netflix
AWS Re:Invent - High Availability Architecture at Netflix
 
Deep Dive on Amazon EBS - AWS Online Tech Talks
Deep Dive on Amazon EBS - AWS Online Tech TalksDeep Dive on Amazon EBS - AWS Online Tech Talks
Deep Dive on Amazon EBS - AWS Online Tech Talks
 
Mobilité && SAP
Mobilité && SAPMobilité && SAP
Mobilité && SAP
 
Awskrug AWS SNS, SQS, and SES
Awskrug AWS SNS, SQS, and SESAwskrug AWS SNS, SQS, and SES
Awskrug AWS SNS, SQS, and SES
 
Tp Sql Server Integration Services 2008
Tp  Sql Server Integration Services  2008Tp  Sql Server Integration Services  2008
Tp Sql Server Integration Services 2008
 
TCO e otimização de custos na AWS
TCO e otimização de custos na AWSTCO e otimização de custos na AWS
TCO e otimização de custos na AWS
 
Audit SEO : les clés de la réussite
Audit SEO : les clés de la réussiteAudit SEO : les clés de la réussite
Audit SEO : les clés de la réussite
 
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
클라우드 상에서의 효율적인 데이터 보관 방법 - 김민형 클라우드 솔루션 아키텍트
 
Web Design Proposal PowerPoint Presentation Slides
Web Design Proposal PowerPoint Presentation Slides Web Design Proposal PowerPoint Presentation Slides
Web Design Proposal PowerPoint Presentation Slides
 
Evernote for Genealogists
Evernote for GenealogistsEvernote for Genealogists
Evernote for Genealogists
 

Similaire à Manipulando dados no Wordpress com o ACF

Workshop Web e WordPress
Workshop Web e WordPressWorkshop Web e WordPress
Workshop Web e WordPressHaste Design
 
Turbinando o WordPress com Meta Boxes
Turbinando o WordPress com Meta BoxesTurbinando o WordPress com Meta Boxes
Turbinando o WordPress com Meta BoxesWordPress Floripa
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPressLeandrinho Vieira
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralHelder Lopes
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
Wordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoWordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoiMasters
 
Wordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoWordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoRicardo Zein
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppetDaniel Sobral
 
Redu walled garden
Redu walled gardenRedu walled garden
Redu walled gardenGuilherme
 
WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14Tatiane Pires
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend FrameworkJaime Neto
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Leo Baiano
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 

Similaire à Manipulando dados no Wordpress com o ACF (20)

Workshop Web e WordPress
Workshop Web e WordPressWorkshop Web e WordPress
Workshop Web e WordPress
 
Turbinando o WordPress com Meta Boxes
Turbinando o WordPress com Meta BoxesTurbinando o WordPress com Meta Boxes
Turbinando o WordPress com Meta Boxes
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPress
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geral
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Grails
GrailsGrails
Grails
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Wordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoWordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimento
 
Wordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoWordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimento
 
Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
Redu walled garden
Redu walled gardenRedu walled garden
Redu walled garden
 
WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14
 
Android Firebase
Android FirebaseAndroid Firebase
Android Firebase
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend Framework
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 

Manipulando dados no Wordpress com o ACF

  • 1. Manipulando dados com o ACF WordPress Meetup Rio de Janeiro Novembro de 2018 Foto por Max Felner
  • 2. Rudá Almeida Integrante da equipe de Tecnologia da Informação da UFRJ Entusiasta do WordPress e integrante da comunidade carioca Palestrante, voluntário e co-organizador de Meetups e WordCamps Manipulando dados com o ACF WordPress Meetup Rio de Janeiro Novembro de 2018
  • 3. Como manipular dados usando Advanced Custom Fields
  • 4. O que são dados?
  • 5. Definição formal “Informações descrevem um domínio físico ou abstrato. Dado é tudo aquilo que pode ser processado.” Gadomski, 1993
  • 6. Dados nativos no WordPress
  • 7. Principais tipos de dados nativos Tipos de publicações ● Posts ● Páginas
  • 8. Principais tipos de dados nativos Tipos de publicações ● Posts ● Páginas Tipos de metadados ● Título ● Autor ● Data e hora de publicação ● Imagem de destaque
  • 9. Dados nativos no WordPress Os tipos de dados nativos que o WordPress oferece por padrão podem não ser os mais adequados para o seu projeto.
  • 11. Tipo de conteúdo: Livro ● Título ● Autor ● Data de lançamento ● Imagem da capa ● Editora ● Tema ● Quantidade de páginas ● Peso ● Dimensões ● Arquivo de e-book
  • 12. Tipo de conteúdo: Livro ● Título ● Autor ● Data de lançamento ● Imagem da capa ● Editora ● Tema ● Quantidade de páginas ● Peso ● Dimensões ● Arquivo de e-book
  • 13. Dados nativos no WordPress Tipos de publicações ● Posts ● Páginas ● Custom Post Types Tipos de metadados ● Título ● Autor ● Data e hora de publicação ● Imagem de destaque
  • 14. Dados nativos no WordPress Tipos de publicações ● Posts ● Páginas ● Custom Post Types Tipos de metadados ● Título ● Autor ● Data e hora de publicação ● Imagem de destaque ● Custom Fields
  • 16. Custom fields nativos Apesar do WordPress já oferecer a funcionalidade de campos personalizados (custom fields) de forma nativa, seu uso é complexo tanto para quem desenvolve o site quanto, principalmente, para quem alimenta o conteúdo. ● Não é intuitivo ● Sujeito a erros ● Sem validação ● Somente texto / literal ● Apenas Posts e CPTs ● Sem condicionais ● Interface muito limitada ● Precisa ser ativado em cada tipo de conteúdo
  • 17.
  • 18.
  • 19. Obtendo o valor de um campo Campos personalizados nativos $meta = get_post_meta( get_the_ID() ); if (!empty($meta)) $campo = $meta['nome_do_campo']; if (!empty($campo)) foreach($campo as $valor) echo $valor; // Outra maneira $primeiro_valor = get_post_meta( get_the_ID(), 'nome_do_campo', true ); Advanced custom fields $valor = get_field( "nome_do_campo" );
  • 20. Criando opções do tema Options API add_action('admin_menu', 'option_page_servicos_externos');function option_page_servicos_externos() { add_options_page( 'Serviços externos', 'Serviços externos', 'edit_pages', 'servicos_externos', 'options_page'); add_action( 'admin_init', 'register_settings' );} function register_settings() { register_setting( 'youtube_group', 'youtube_playlist_id' ); register_setting( 'youtube_group', 'youtube_channel_url' );} function options_page() {?><div class="wrap"><h1>Vídeos do YouTube</h1><form method="post" action="options.php"> <?php settings_fields( 'youtube_group' ); ?> <?php do_settings_sections( 'youtube_group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">ID da Playlist</th> <td><input type="text" name="youtube_playlist_id" value="<?php echo esc_attr( get_option('youtube_playlist_id') ); ?>" /></td> </tr> <th scope="row">URL do canal</th> <td><input type="text" name="youtube_channel_url" value="<?php echo esc_attr( get_option('youtube_channel_url') ); ?>" /></td> </tr> </table> <?php submit_button(); ?></form></div><?php } Advanced custom fields acf_add_options_page();
  • 23. Advanced Custom Fields permite manipular dados tanto através da interface administrativa quanto de funções em PHP de maneira simplificada, agilizando o desenvolvimento e a utilização da plataforma.
  • 24. Advanced Custom Fields A grosso modo, é quase um “builder” para o painel do WordPress, criando nas telas de composição de conteúdo áreas extras onde serão encaixados blocos flexíveis e de extensa personalização.
  • 25.
  • 26.
  • 27.
  • 28. Tipos de campos do ACF
  • 38. Validação no back-end add_filter('acf/validate_value/name =numero', function ($valid, $value, $field, $input) { if ($value%2) return 'Somente números pares!'; return $valid; }, 10, 4);
  • 43. Versionando via PHP if( function_exists('acf_add_local_field_group') ): acf_add_local_field_group(array( 'key' => 'group_5bfc72339289b', 'title' => 'Básico', 'fields' => array( array( 'key' => 'field_5bfc7393f71fb', 'label' => 'Área de Texto', 'name' => 'area_de_texto', 'type' => 'textarea', 'instructions' => '', 'required' => 0, 'conditional_logic' => 0, 'wrapper' => array( 'width' => '', 'class' => '', 'id' => '', ), 'default_value' => '', 'placeholder' => '', 'maxlength' => '', 'rows' => 3, 'new_lines' => '', ), // (...)
  • 44. Versionando via JSON [ { "key": "group_5bfc72339289b", "title": "Básico", "fields": [ { "key": "field_5bfc7393f71fb", "label": "Área de Texto", "name": "area_de_texto", "type": "textarea", "instructions": "", "required": 0, "conditional_logic": 0, "wrapper": { "width": "", "class": "", "id": "" }, "default_value": "", "placeholder": "", "maxlength": "", "rows": 3, "new_lines": "" },
  • 45. VAMOS VER NA PRÁTICA?
  • 46.
  • 48. Nem tudo é perfeito... ● Funcionalidades como repetidor, galeria, página de opções e conteúdo flexível são exclusividades da versão paga. ● A versão paga é barata, com licença vitalícia para sites ilimitados. ● O ACF é “apenas” um front-end para os custom fields nativos. ● Os dados não estão associados aos posts, e sim aos custom fields. ● Jamais altere o nome ou tipo dos campos quando já existe conteúdo, ou estes dados serão perdidos >_<”
  • 51.
  • 52.
  • 53.
  • 54.