Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Metabox para pagina especifica. #457

Open
thiagocrepald opened this issue Jun 14, 2017 · 6 comments
Open

Metabox para pagina especifica. #457

thiagocrepald opened this issue Jun 14, 2017 · 6 comments
Labels

Comments

@thiagocrepald
Copy link

Bom dia pessoal,

conheci o Odin nesta semana e parei de utilizar o plugin Meta Box para utilizar o mesmo.
Gostei muito pela praticidade e objetividade da documentação.

Estou com o seguinte problema, como faço para criar uma Metabox em uma página especifica.

Preciso criar os campos personalizados, porém na Quem Somos irá ter campos diferentes da Contato por exemplo.

Como posso fazer isso? É possível?

@allysonsouza
Copy link
Member

Olá @thiagocrepald,

Por padrão o Odin não oferece este recurso, mas você pode fazer com um pouco de código. Primeiro passo é saber, como distinguir quais campos devem ser exibidos em cada página? Pelo título? ("Quem somos", "Contato")? Pelo modelo de página selecionado no select de atributos da página? Ou por um campo de opção (uma metabox) que definirá quais outras meta boxes serão exibidas?

O principal é você saber onde isso será definido/verificado e então criar um código JavaScript para alternar os campos a serem exibidos.

@mariovalney
Copy link
Contributor

Olá @thiagocrepald tudo bem?

Uma outra solução seria fazer a verificação da página antes de adicionar os fields com set_fields.

@thiagocrepald
Copy link
Author

@allysonsouza show de bola, na vdd acho que por titulo seria mais fácil..

Você já criou algo neste modelo?

@thiagocrepald
Copy link
Author

@mariovalney com um if por exemplo?

@lenivene
Copy link
Contributor

@allysonsouza show de bola, na vdd acho que por titulo seria mais fácil..

@thiagocrepald se você usa vários idiomas no site, por titulo seria uma boa solução? 🤔

@williamgcd
Copy link

@thiagocrepald Não sei se já resolveu isso, mas precisei fazer algo do tipo hoje e ao pesquisar alguma solução, achei essa sua pergunta. Eu acabei alterando a class Odin_Metabox.

Segue o que eu fiz:

// Adicionar um parametro no construct
public function __construct( $id, $title, $post_type = 'post', $context = 'normal', $priority = 'high', $post_name = [] )

// Algumas linhas abaixo, junto com as outras declarações, eu coloquei a do post_name
$this->post_name = (!is_array($post_name) ? [$post_name] : $post_name);

// Depois, no metodo add(), eu adicionei o seguinte conteúdo logo no começo

global $post;
// Has a post_name specificity?
if (count($this->post_name)) {
    // If the name is not in the array, skip it.
    if (!in_array($post->post_name, $this->post_name)) {
        return false;
    }
}

Coloquei o arquivo aqui para usar se quiser.

class-metabox.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants