✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Pagina di modifica della categoria personalizzata di WordPress

14

Aggiungere ulteriori meta box, campi e altre informazioni a WordPress è facile se conosci gli hook giusti e le API appropriate da seguire. Ma cosa succede se vuoi aggiungere informazioni a una pagina di tassonomia di WordPress?

Ad esempio, supponiamo di voler creare una pagina di modifica della categoria WordPress personalizzata o, almeno, aggiungere alcune informazioni personalizzate a una pagina di tassonomia?

È ancora possibile farlo, ed è ancora relativamente facile ma, ancora una volta, è necessario conoscere gli hook giusti da utilizzare e dipende anche dal fatto che si stia lavorando con le tassonomie integrate o con una tassonomia personalizzata.

Per questo post, mostrerò come farlo usando una tassonomia personalizzata e gerarchica (o, in termini più semplici, una categoria personalizzata).

Pagina di modifica della categoria personalizzata di WordPress

Innanzitutto, se scegli di lavorare con una pagina di categoria standard, probabilmente vedrai qualcosa del genere:

E i due hook con cui devi lavorare sono:

Se hai fatto clic su uno dei collegamenti, noterai che quest’ultimo non ha alcuna informazione ma il primo recita:

L’azione/hook edit_category_form può essere utilizzata per eseguire azioni aggiuntive nella schermata di modifica della categoria. Ad esempio, puoi aggiungere campi modulo per salvare informazioni aggiuntive per una particolare categoria.

A tal fine, generalmente scelgo di utilizzare quel gancio poiché è ben definito all’interno del Codex. In questo post, tuttavia, mi occupo solo del rendering delle informazioni, non dell’aggiunta di campi aggiuntivi che devono essere salvati.

Cablare le cose

Nella forma più semplice, il modo migliore per iniziare ad aggiungere informazioni personalizzate a questo tipo di pagina è creare una funzione e collegarla all’hook sopra elencato. Nella sua forma più semplice, questo è simile a questo:

<?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.
}

Tuttavia, se segui il percorso orientato agli oggetti, puoi scegliere di avere una classe che accetta un hook come argomento nel costruttore e ascolta l’attivazione di quell’evento. In tal caso, il tuo codice potrebbe essere simile a questo:

<?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.
    }
}

Indipendentemente da ciò, il punto è che è necessario disporre di una classe o di una funzione collegata a un hook che visualizzi le informazioni quando viene presentata la schermata.

Visualizzazione delle informazioni

Da qui, avrai bisogno di qualcosa da renderizzare. Sono un fan di mantenere la mia logica separata, quindi di solito creo una directory View e quindi inserisco i file parziali per le viste in quella directory.

Pagina di modifica della categoria personalizzata di WordPress

Naturalmente, puoi sempre creare la stringa HTML nella funzione PHP (ma assicurati di disinfettare l’output usando qualcosa come wp_kses ).

Per questo esempio, resterò semplice: voglio solo estrarre un elenco di tutti i post (o oggetti, come vedrai momentaneamente) dal database ed elencare le informazioni sulla pagina. Per fare ciò, avrò bisogno di un paio di query del database e quindi posso scorrere l’elenco dei risultati.

Innanzitutto, ho bisogno di una query che recuperi il term_taxonomy_id dalla categoria specificata:

<?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;
}

Quindi ho bisogno di recuperare un elenco di tutti gli ID oggetto correlati da questo 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;
}

Da qui, posso quindi utilizzare la funzione (o classe) originale che ho creato in precedenza per eseguire il rendering delle informazioni :

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

Ma ci sono molte altre cose che puoi fare da lì.

C’è più

Come notato, questo restituisce gli ID degli oggetti che sono essenzialmente ID di post (o ID di pagina o ID di tipo di post personalizzati o qualsiasi altra cosa dalla tabella wp_posts ).

Una volta che hai queste informazioni, puoi recuperare qualsiasi informazione come titolo, contenuto, metadati, varie informazioni sulla data e così via.

Il punto del post, tuttavia, non è mostrare quali informazioni recuperare, ma come recuperare le informazioni per una determinata tassonomia e quindi renderle in una pagina di categoria WordPress personalizzata. E questo è un modo semplice per fare esattamente questo.

Fonte di registrazione: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More