✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Página de edição de categoria personalizada do WordPress

14

Adicionar meta caixas, campos e outras informações adicionais ao WordPress é fácil se você souber os ganchos certos e as APIs adequadas a seguir. Mas e se você quiser adicionar informações a uma página de taxonomia do WordPress?

Por exemplo, digamos que você queira criar uma página de edição de categoria WordPress personalizada ou, no mínimo, adicionar algumas informações personalizadas a uma página de taxonomia?

Ainda é possível fazer isso, e ainda é relativamente fácil, mas, novamente, você precisa saber os ganchos certos para usar, e também depende se você está trabalhando com as taxonomias internas ou com uma taxonomia personalizada.

Para este post, mostrarei como fazer isso usando uma taxonomia hierárquica personalizada (ou, em termos mais simples, uma categoria personalizada).

Página de edição de categoria personalizada do WordPress

Primeiro, se você optar por trabalhar com uma página de categoria padrão, provavelmente verá algo assim:

E os dois ganchos com os quais você tem que trabalhar são:

Se você clicou em um dos links, notará que o último não tem nenhuma informação, mas o primeiro diz:

A ação/gancho edit_category_form pode ser usada para executar ações adicionais na tela de edição de categoria. Por exemplo, você pode adicionar campos de formulário para salvar informações adicionais para uma categoria específica.

Para esse fim, geralmente opto por usar esse gancho, pois está bem definido no Codex. Neste post, porém, estou preocupado apenas com a renderização de informações – não com a adição de campos adicionais que precisam ser salvos.

Ligando as coisas

Na forma mais simples, a melhor maneira de começar a adicionar informações personalizadas a esse tipo de página é criar uma função e anexá-la ao gancho listado acima. Em sua forma mais básica, isso se parece com isso:

<?php

add_action('edit_category_form', 'acme_display_object_ids');
/**
 * Displays an ordered list of all of the object IDs for a given
 * taxonomy.
 */
function acme_display_object_ids()
{
  // Code for displaying the Object IDs goes here.
}

No entanto, se você seguir a rota orientada a objetos, poderá optar por ter uma classe que aceite um gancho como argumento no construtor e escute esse evento ser acionado. Se for esse o caso, seu código pode ficar assim:

<?php

class ObjectIdSubscriber
{
    /**
     * @var string the hook to which this class subscribes
     */
    private $hook;

    /**
     * @param string $hook the hook to which this class is registered with WordPress
     */
    public function __construct(string $hook)
    {
      $this->hook = $hook;
    }

    /**
     * Renders all of the information for the object IDs.
     */
    public function load()
    {
        // Code for displaying the Object IDs goes here.
    }
}

Independentemente disso, o ponto é que você precisa ter uma classe ou uma função conectada a um gancho que renderizará informações quando a tela for apresentada.

Exibindo informações

A partir daqui, você vai precisar de algo para renderizar. Eu sou um fã de manter minha lógica separada, então eu costumo criar um diretório View e então colocar os arquivos parciais para as views nesse diretório.

Página de edição de categoria personalizada do WordPress

Claro, você sempre pode construir a string HTML na função PHP (mas certifique-se de limpar a saída usando algo como wp_kses ).

Para este exemplo, vou simplificar: eu só quero puxar uma lista de todos os posts (ou objetos, como você verá momentaneamente) do banco de dados e listar as informações na página. Para fazer isso, precisarei de algumas consultas ao banco de dados e, em seguida, posso percorrer a lista de resultados.

Primeiro, preciso de uma consulta que recupere o term_taxonomy_id da categoria fornecida:

<?php

// This will retrieve all of the term relationships from where we can get post IDs.
global $wpdb;
$termTaxonomyId = $wpdb->get_results(
    $wpdb->prepare(
        "
        SELECT DISTINCT term_taxonomy_id
        FROM $wpdb->term_taxonomy
        WHERE term_id = %s
        ",
        $tagId
    ),
    ARRAY_A
);
$termTaxonomyId = isset($termTaxonomyId[0])? $termTaxonomyId[0]: null;
if (null === $termTaxonomyId) {
    return null;
}

Então eu preciso recuperar uma lista de todos os IDs de objetos relacionados por este term_taxonomy_id :

<?php

// This will retrieve all of the post IDs.
$postIds = $wpdb->get_results(
    $wpdb->prepare(
        "
        SELECT object_id
        FROM $wpdb->term_relationships
        WHERE term_taxonomy_id = %s
        ",
        $termTaxonomyId
    ),
    ARRAY_A
);
if (empty($postIds)) {
    return null;
}

A partir daqui, posso usar a função (ou classe) original que criei anteriormente para renderizar as informações :

<ul>
<?php foreach ($postIds as $postId): ?>
  <li><?php echo $postId; ?></li>
<?php endforeach; ?>
</ul>

Mas há muitas coisas adicionais que você pode fazer a partir daí.

Tem mais

Conforme observado, isso retorna os IDs dos objetos que são essencialmente IDs de postagem (ou IDs de página ou IDs de tipo de postagem personalizados ou qualquer outra coisa da tabela wp_posts ).

Depois de ter essas informações, você pode recuperar qualquer informação, como título, conteúdo, metadados, várias informações de data e assim por diante.

O objetivo do post, no entanto, não é mostrar quais informações recuperar, mas como recuperar informações para uma determinada taxonomia e renderizá-las em uma página de categoria personalizada do WordPress. E esta é uma maneira direta de fazer exatamente isso.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação