web-dev-qa-db-fra.com

Nettoyer l'URL permalien pour le type de publication personnalisée

J'ai un type de contenu personnalisé de photo_group qui est une collection de photos.

Je souhaite pouvoir accéder à mysite.com/photos et faire en sorte que cette page supprime tous mes groupes de photos.

Comment puis-je faire cela sans faire une "page" et définir le modèle? Ou est-ce l'approche que je dois adopter?

Merci

1
Romes

Rome,

La méthode que vous avez suggérée fonctionnera certainement et est probablement la plus simple; Cependant, je peux certainement voir des cas dans lesquels ce n'est pas idéal. Pour accomplir cela plus "par programme", vous devez procéder comme suit:

1) Définir une nouvelle requête var

2) Générer une nouvelle règle de réécriture pour donner un sens à cette requête var

3) Rediriger vers un modèle lorsque cette requête var correspond.

Voici un code pour vous aider.

1: Ajouter la requête var

function query_vars( $public_query_vars ) {
    $public_query_vars[] = 'romes_var';
    return $public_query_vars;
}
add_filter( 'query_vars', 'romes_query_vars' );

2: associer une règle de réécriture pour gérer la requête var

function romes_generate_rewrite_rules( $wp_rewrite ) {
    $new_rules = array();
    $new_rules['(photos)/?$'] = 'index.php?romes_var=$matches[1]';
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'romes_generate_rewrite_rules' );

3: Détecte la requête var et redirige vers un modèle

function romes_template_redirect() {
    if ( 'photos' == get_query_var( 'romes_var' ) ) {
        load_template( get_stylesheet_directory_uri() . '/template-photos.php' );
        exit();
    }
}
add_action( 'template_redirect', 'romes_template_redirect' );

Ce code n'est pas spécifiquement testé, mais devrait vous rendre la majeure partie du chemin. Assurez-vous de vider vos règles de réécriture (visitez simplement la page des permaliens) avant d’essayer d’exécuter votre script avec ce code.

1
tollmanz

Vous avez juste besoin d'une taxonomie personnalisée pour le faire. Vous n'avez pas besoin de créer une page pour mysite.com/photos, il peut s'agir d'une page de taxonomie. Par exemple: créez une taxonomie personnalisée nommée " photos ". Vous pouvez ensuite copier taxonomy.php dans un taxonomy-photos.php comme fichier de modèle de page de taxonomie personnalisée.

Vérifiez-le sur WordPress Codex: Codonomies de taxonomies personnalisées

Certains plugins peuvent vous aider à créer ces taxonomies personnalisées très facilement. Trouvez simplement celui que vous aimez: http://wordpress.org/extend/plugins/search.php?q=Custom+Taxonomies

Bonne chance!

1
Tim Yao