Come modificare la struttura del permalink per il tipo di posta personalizzato e le sue tassonomie?


10

Questo è un ripasso di una domanda precedente che avevo, ma mi piace approfondire ora per essere in grado di risolverlo completamente.

Quindi, con i post (normali) cambiare il permalink è facile come andare su Impostazioni> Permalink e cambiarlo in qualcosa che ti piace, come quello ampiamente utilizzato %category%/%postname%.html. Tutto funziona. Se solo questo fosse facile per il tipo di posta personalizzato e anche per le tassonomie.

Quindi questo è quello che mi piace realizzare.

  1. http://mywordpress.com/portfolio.html - Visualizza tutti i post in tutte le categorie.
  2. http://mywordpress.com/portfolio/music/ - Visualizza tutti i messaggi in questa categoria.
  3. http://mywordpress.com/portfolio/music/trance/ - Visualizza tutti i post in questa categoria (figlio).
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Visualizza il post.

Quello che ho ottenuto finora è il seguente:

  1. Per prima cosa ho creato un progettocustom_post_type denominato e una project_category .taxonomy
  2. Ho creato un portfolio di pagine e gli ho dato un modello di pagina che elencherà tutti i post_type = projectpost. Come posso aggiungere .html al permalink delle pagine? Ora collega a http://mywordpress.com/portfolio mentre voglio http://mywordpress.com/portfolio.html . Questo dovrebbe risolvere il primo problema.
  3. Quindi le cose diventeranno difficili, perché non sappiamo di persona quante sottocategorie ci sono, forse non ce ne sono nemmeno. Quindi la struttura che stiamo cercando è portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. Sono ancora bloccato a questo punto. Penso che dovrei in qualche modo aggiungere l'ultima categoria al percorso e passarla lungo il project_category , che dovrebbe portare a un file taxonomy.php dove posso elaborarlo correttamente.
  4. Non ho affrontato neanche questo, ma dovrebbe avere qualcosa a che fare con %postname%.htmlla fine di qualcosa.

Spero che il mio problema sia chiaro e che ci siano sviluppatori coraggiosi che mi aiuteranno ad affrontare questo problema che mi ha già tenuto occupato per quattro giorni COMPLETI!


1
La soluzione che ho fornito nell'ultima domanda avrebbe dovuto funzionare in questo modo, se l'hai implementata correttamente. L'unica cosa è che non puoi ottenere la parte html
Manny Fleurmond,

Sì, ma è stato bloccato su un percorso specifico, quindi solo categoria / sottocategoria / pagina mentre potrebbero non esserci sottocategorie o anche di più. Questo è più dinamico.
Segna il

O non l'ho implementato correttamente;)
Segna il

Risposte:


4

Ok, penso che potrei avere una soluzione. Non ho idea se questo è il modo giusto per farlo, ma per ora è l'unica cosa che sembra funzionare.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}

Il filtro richieste è un buon modo per filtrare se chiediamo una categoria (termine in effetti) e un post. Permette di aggiungere solo una regola di riscrittura e di ottenere la pagina di post se il post è in una categoria, sottocategoria o no.
ZalemCitizen,

1

2 metodi diversi:

* Vedi le note in fondo a questo post.


ad esempio, vuoi avere tale struttura permalink:
/ MAIN_CATEGORY / SUB_CAT_2 / Another_SUBCAT / my-post

Inizialmente , potresti dover impostare i permalink su /% category% /% postname% . Poi...




METODO 1:

creare categorie standard ( MAIN_CATEGORY, SUB_CAT_1, and etc..), e registrare il CUSTOM POST, tra cui questo parametro:

'taxonomies'    => array('category'..)

e utilizzare questi codici per modificare i permalink: https://wordpress.stackexchange.com/a/195643/33667
Quindi, dopo aver pubblicato un POST PERSONALIZZATO (se allegato in una categoria), l'URL sarà:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



METODO 2:

(ps questo metodo non è consigliato se prevedi di pubblicare centinaia o migliaia di post)

registra il COSTOM POST (denominato MAIN_CATEGORY), inclusi questi parametri:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

quindi pubblica post personalizzati come questo: (ovvero pubblica diversi post personalizzati , denominati . Successivamente, quando pubblichi un altro post, ma scegli come genitore.
SUB_CAT_2, SUB_CAT_1..SUB_CAT_2





ps
1) Se sei un principiante, rivedere: Registrare COSTOM POST e Registrare CUSTOM POST con TAXONOMY
2) se sarà necessaria la funzionalità di ricerca per i livelli secondari, quindi utilizzare la query di ricerca personalizzata


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.