SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
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?

Mais conteúdo relacionado

Mais procurados

점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정Arawn Park
 
Oracle High Availabiltity for application developers
Oracle High Availabiltity for application developersOracle High Availabiltity for application developers
Oracle High Availabiltity for application developersAlexander Tokarev
 
Introduction to Django CMS
Introduction to Django CMS Introduction to Django CMS
Introduction to Django CMS Pim Van Heuven
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)Keisuke Kadoyama
 
Log management system for Microservices
Log management system for MicroservicesLog management system for Microservices
Log management system for MicroservicesVõ Duy Tuấn
 
Black Belt Online Seminar AWS上の暗号化ソリューション
Black Belt Online Seminar AWS上の暗号化ソリューションBlack Belt Online Seminar AWS上の暗号化ソリューション
Black Belt Online Seminar AWS上の暗号化ソリューションAmazon Web Services Japan
 
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...Amazon Web Services
 
Intro to Rails ActiveRecord
Intro to Rails ActiveRecordIntro to Rails ActiveRecord
Intro to Rails ActiveRecordMark Menard
 
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud WorkshopYongSung Yoon
 
nginx 입문 공부자료
nginx 입문 공부자료nginx 입문 공부자료
nginx 입문 공부자료choi sungwook
 
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...Amazon Web Services Korea
 
클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018
클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018 클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018
클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018 Amazon Web Services Korea
 
AWSのセキュリティについて
AWSのセキュリティについてAWSのセキュリティについて
AWSのセキュリティについてYasuhiro Horiuchi
 
AWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAmazon Web Services Japan
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
GeoServer 2.4.x 한국어 사용자 지침서
GeoServer 2.4.x 한국어 사용자 지침서GeoServer 2.4.x 한국어 사용자 지침서
GeoServer 2.4.x 한국어 사용자 지침서SANGHEE SHIN
 

Mais procurados (20)

점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정점진적인 레거시 웹 애플리케이션 개선 과정
점진적인 레거시 웹 애플리케이션 개선 과정
 
Oracle High Availabiltity for application developers
Oracle High Availabiltity for application developersOracle High Availabiltity for application developers
Oracle High Availabiltity for application developers
 
Introduction to Django CMS
Introduction to Django CMS Introduction to Django CMS
Introduction to Django CMS
 
サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)サーバーレスアーキテクチャのすすめ(公開版)
サーバーレスアーキテクチャのすすめ(公開版)
 
Log management system for Microservices
Log management system for MicroservicesLog management system for Microservices
Log management system for Microservices
 
Black Belt Online Seminar AWS上の暗号化ソリューション
Black Belt Online Seminar AWS上の暗号化ソリューションBlack Belt Online Seminar AWS上の暗号化ソリューション
Black Belt Online Seminar AWS上の暗号化ソリューション
 
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
STG309_Deep Dive Using Hybrid Storage with AWS Storage Gateway to Solve On-Pr...
 
Intro to Rails ActiveRecord
Intro to Rails ActiveRecordIntro to Rails ActiveRecord
Intro to Rails ActiveRecord
 
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
초개인화된 비즈니스 시대, 마이데이터 사업에 탑승하라! - 김민형 클라우드 솔루션 아키텍트
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud Workshop
 
nginx 입문 공부자료
nginx 입문 공부자료nginx 입문 공부자료
nginx 입문 공부자료
 
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
 
클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018
클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018 클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018
클라우드로 데이터 센터 확장하기 : 하이브리드 환경을 위한 연결 옵션 및 고려사항::강동환::AWS Summit Seoul 2018
 
AWSのセキュリティについて
AWSのセキュリティについてAWSのセキュリティについて
AWSのセキュリティについて
 
Aula 05 - Java Script Básico
Aula 05 -  Java Script BásicoAula 05 -  Java Script Básico
Aula 05 - Java Script Básico
 
Air group tb 080112_final
Air group tb 080112_finalAir group tb 080112_final
Air group tb 080112_final
 
AWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWSAWS Black Belt Online Seminar 2017 Docker on AWS
AWS Black Belt Online Seminar 2017 Docker on AWS
 
SASS - CSS with Superpower
SASS - CSS with SuperpowerSASS - CSS with Superpower
SASS - CSS with Superpower
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
GeoServer 2.4.x 한국어 사용자 지침서
GeoServer 2.4.x 한국어 사용자 지침서GeoServer 2.4.x 한국어 사용자 지침서
GeoServer 2.4.x 한국어 사용자 지침서
 

Semelhante a Como manipular dados com 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 desenvolvimentoRicardo Zein
 
Wordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoWordpress como framework de desenvolvimento
Wordpress como framework de desenvolvimentoiMasters
 
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
 

Semelhante a Como manipular dados com 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
 

Como manipular dados com 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.