Je voulais faire quelque chose de similaire comme ça depuis longtemps. J'ai une url http://studionumberone.com/portfolio/obey-clothing/ qui montre simplement la galerie d'images jQuery, j'ai ensuite studionumberone.com/portfolio/obey-clothing/?view=all. Ce qui montre toutes les images de la galerie les unes au dessus des autres.
Je voudrais que l'URL soit studionumberone.com/portfolio/obey-clothing/all
Le type de message personnalisé fait simplement un élément de base:
<?php get_header();
$view = $_GET['view'];
?>
<?php if ($view == "all") { ?>
show all images
<?php } else { ?>
show gallery shortcode
<?php } ?>
<?php get_footer(); ?>
J'ai essayé (pas de chance):
add_action( 'init', 'ss_permalinks' );
function ss_permalinks() {
add_rewrite_rule(
'([^/]+)/all/?',
'index.php?view=all&service=$matches[1]',
'top'
);
}
add_filter( 'query_vars', 'ss_query_vars' );
function ss_query_vars( $query_vars ) {
$query_vars[] = 'view';
return $query_vars;
}
Bonjour @westondeboer:
Puisque vous dites que votre type de message est 'portfolio'
, voici ce qui fonctionne sur mon site de test WordPress v3.0.4 avec un type de message personnalisé 'portfolio'
défini. Il remplace tout le code que vous avez:
add_action('init','yoursite_init');
function yoursite_init() {
global
$wp,$wp_rewrite;
$wp->add_query_var('view');
$wp_rewrite->add_rule('portfolio/([^/]+)/all',
'index.php?view=all&post_type=portfolio&name=$matches[1]', 'top');
// Once you get working, remove this next line
$wp_rewrite->flush_rules(false);
}
Vous devez également vider vos règles de réécriture en enregistrant vos liens permanents dans la console d’administration. Faites-moi savoir si cela résout votre problème et si ce n'est pas le cas, donnez-moi des éclaircissements.
Vous devez également capturer le paramètre de requête différemment de l’utilisation de `$ _GET ['view'] '; l'un ou l'autre fonctionnera:
// Option 1
$view = {$GLOBALS['wp']->query_vars['view'];
// Option 2
global $wp;
$view = $wp->query_vars['view'];