ottenere l'url / link dell'archivio dei termini

9 apr 2012, 23:27:28
Visualizzazioni: 63.5K
Voti: 7

Ho creato dei custom post type e delle tassonomie personalizzate per questi.

Esempio: actors (tassonomia) per movies (tipo di post).

Ora voglio mostrare nel mio widget alcuni termini e un link altro per l'archivio dei termini actors.

Come posso ottenere il link / url dell'archivio della tassonomia?

0
Tutte le risposte alla domanda 6
2
16

Usa get_term_link

Ad esempio, per stampare una lista di termini "attori" con link agli archivi:

$terms = get_terms('actors');
echo '<ul>';
foreach ($terms as $term) {
    echo '<li><a href="'.get_term_link($term).'">'.$term->name.'</a></li>';
}
echo '</ul>';

Però!

Se quello che intendi veramente è l'equivalente dell'archivio del custom post type, che elenca tutti i post di quel tipo, ma per i termini della tassonomia, ad esempio una pagina che funge da archivio elencando i vari termini della tassonomia disponibili, allora sei sfortunato. In WordPress non ci sono archivi di tassonomia per i termini, solo post assegnati a un determinato termine.

Per creare una pagina che elenca i termini della tassonomia puoi usare un codice simile a quello sopra. Poi inseriscilo in un page template e usa quella pagina come archivio dei termini della tassonomia.

Il motivo è che il problema risiede nel post loop, quasi tutti i page template sono pensati per averne uno, e se guardi la gerarchia dei template, se i template necessari non vengono trovati, tutto torna a index.php, e index.php ha un post loop che mostra i post, non un term loop. Questo e i molti modi diversi e idee su come i termini dovrebbero essere elencati significa che non c'è consenso. E gli archivi per data? Dovrebbe esserci un archivio che elenca mesi e anni? Timeline? Pannelli, tessere, nuvole, ecc.

9 apr 2012 23:42:14
Commenti

Il suggerimento che hai dato era esattamente quello che stavo cercando. Il mio approccio era di usare un template di pagina, ma sembra essere una soluzione molto personalizzata. Ma se non ci sono possibilità per un archivio di tassonomia, dovrò implementarlo come hai suggerito. Grazie

e382df99a7950919789725ceeec126 e382df99a7950919789725ceeec126
10 apr 2012 04:51:30

Non esiste. Il problema sta nel loop dei post, quasi ogni singolo template di pagina è pensato per averne uno, e se guardi la gerarchia, se i template necessari non vengono trovati, tutto torna a index.php, e index.php ha un loop di post che mostra articoli, non un loop di termini.

Tom J Nowell Tom J Nowell
10 apr 2012 13:01:15
0
10

Non esiste un modo semplice per ottenere questo risultato cercando in giro. E tutti coloro che rispondono ovunque pensano che tu voglia collegarti a un TERMINE nella TASSONOMIA... Mentre tu stai cercando di ottenere un link all'archivio della TASSONOMIA... Per il quale non ho trovato assolutamente nulla.

In pratica, come molte persone, desideri un metodo get_taxonomy_archive_link.

Tuttavia, per un motivo o per l'altro, semplicemente non esiste. Considero questo un GRAVE fallimento da parte di Wordpress.

Non esiste una risposta alla tua domanda. Non una che funzioni effettivamente all'interno del framework WP come soluzione corretta. Certo, puoi mettere insieme get_bloginfo() per le tue esigenze, ma non c'è assolutamente alcuna ragione logica in WP per cui get_taxonomy_archive_link non esista.

Detto questo, aggiungo sempre la seguente funzione ai miei temi:

/**
 * Passa un valore di tassonomia supportato da `get_taxonomy` di WP
 * e otterrai l'URL alla vista archivio.
 * @param $taxonomy string|int
 * @return string
 */
function get_taxonomy_archive_link( $taxonomy ) {
  $tax = get_taxonomy( $taxonomy ) ;
  return get_bloginfo( 'url' ) . '/' . $tax->rewrite['slug'];
}
13 ago 2015 20:49:22
0

Sembra che tu stia chiedendo un link a un archivio con "tutti i post che hanno un qualsiasi termine dalla tassonomia Attori". Tutti qui hanno risposto come se tu avessi chiesto il link a un archivio di un termine specifico, perché ciò che chiedi non ha senso nel mondo WordPress.

Sono sorpreso dalla risposta di pixelbacon e dal fatto che abbia 6 voti positivi... Quella funzione restituisce un URL che non porta da nessuna parte... WordPress non ha un modo per interpretare quell'URL né per eseguire la query che dovrebbe essere dietro quella richiesta.

Nel database, una tassonomia ha relazioni con i termini, e i termini hanno relazioni con i post. Un singolo post non ha relazioni dirette con la tassonomia. L'unica cosa che li collega è il fatto che un post-type potrebbe supportare una tassonomia.

Scriviamo a parole cosa stai cercando di visualizzare in quella pagina: "Mostrami tutti i post del post_type 'post', che hanno QUALSIASI termine dalla tassonomia Attori."

Questo si traduce essenzialmente in: "mostrami tutti i post del post_type 'post' (che supporta la tassonomia Attori)".

Quindi l'unica differenza rispetto a un archivio generico di post_type (mostra tutti i post di un dato post_type) sarebbe SE hai post che non hanno alcun termine Attori assegnato e vuoi ESCLUDERLI.

Se è questo il caso, puoi creare una pagina personalizzata, eseguire una query generica a tutti i post, poi nel loop controlli se il post ha termini Attori con wp_get_post_terms(get_the_ID(), 'actors'), ed eventualmente escluderlo se non ne ha.

8 ott 2018 13:16:39
3

Il link dell'archivio per qualsiasi tassonomia segue questo schema:

http://{siteurl}/{taxonomy}/{term}

Ad esempio, la categoria "news" su "myblogsite.com" avrebbe il seguente URL dell'archivio:

http://myblogsite.com/category/news

Quindi l'archivio "Harrison Ford" nella tua tassonomia actors sarebbe:

http://myblogsite.com/actors/harrison-ford
9 apr 2012 23:34:22
Commenti

quindi è possibile usare http://{siteurl}/{taxonomy} per l'archivio della tassonomia?

e382df99a7950919789725ceeec126 e382df99a7950919789725ceeec126
10 apr 2012 04:47:31

È comunque necessario specificare il termine all'interno della tassonomia per generare l'archivio.

EAMann EAMann
10 apr 2012 07:05:35

Questo non è sempre corretto. Un utente può modificare la parte {taxonomy} di quella struttura nelle impostazioni dei permalink. Ad esempio, se hai la categoria uncategorized, l'URL predefinito è http://{siteurl}/category/uncategorized. Ma se modifichi il category_base nelle impostazioni dei permalink in topics, per esempio, diventerebbe http://{siteurl}/topics/uncategorized. Quindi una formula più accurata per le categorie sarebbe http://{siteurl}/{get_option('category_base')}/uncategorized

Sam Sam
4 ott 2018 22:07:17
1

usa get_term_link() :)

MODIFICA:

Questo potrebbe essere utile: link archivio per la tassonomia: get_the_term_list(). Dal codex:

Restituisce una stringa HTML dei termini di tassonomia associati a un post e alla tassonomia specificata. I termini sono linkati alle rispettive pagine di elenco dei termini.

quindi deve essere collegato a un ID post, ma fa il lavoro di archiviazione dei termini di tassonomia.

9 apr 2012 23:34:38
Commenti

non è quello che cercavo. controlla il post di Tom: cercavo il link all'archivio per la tassonomia stessa.

e382df99a7950919789725ceeec126 e382df99a7950919789725ceeec126
10 apr 2012 04:53:58
0

Quando crei la tua tassonomia personalizzata, puoi aggiungere l'attributo rewrite ad essa. Questo attributo può impostare lo slug di riscrittura per la tua tassonomia che puoi utilizzare per il link:

register_taxonomy('attori', 'film', array(
    // ...
    'rewrite' => array( 'slug' => 'attori' ),
    // ...
));

Quindi, per creare un link all'archivio della tassonomia puoi utilizzare il seguente schema:

http://miosito.com/attori/nome-attore
9 apr 2012 23:37:25