- Statut : non résolu
- Ce sujet contient 16 réponses, 3 participants et a été mis à jour pour la dernière fois par danymi, le il y a 13 années et 3 mois.
-
AuteurMessages
-
11 juillet 2011 à 15 h 42 min #497301
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 3.2
– Version de PHP/MySQL : 5.3.0 / 5.1.36
– Thème utilisé : perso
– Extensions en place : Category Images II, Contact Form 7, TinyMCE Advanced, WP-DBManager, WP-PageNavi,WP No Category Base
– Nom de l’hebergeur : local pour le moment
– Adresse du site : localProblème(s) rencontré(s) :
J’ai un problème pour mettre en place la pagination avec wp pagenavi et les custom post type, ca marche pas et me renvois sur une page 404.
Définition du custom post type :
$labelsExposition = array(
‘name’ => _x(‘Expositions’, ‘post type general name’),
‘singular_name’ => _x(‘Exposition’, ‘post type singular name’),
‘add_new’ => _x(‘Ajouter une exposition’, ‘photo’),
‘add_new_item’ => __(‘Ajouter une exposition’),
‘edit_item’ => __(‘Editer une exposition’),
‘new_item’ => __(‘Nouvelle exposition’),
‘view_item’ => __(‘Voir l’exposuition’),
‘search_items’ => __(‘Chercher une exposition’),
‘not_found’ => __(‘Aucunes expositions trouvées’),
‘parent_item_colon’ => »,
‘menu_name’ => ‘Expositions’
);
$argsExpositions = array(
‘labels’ => $labelsExposition,
‘public’ => true,
‘publicly_queryable’ => true,
‘show_ui’ => true,
‘show_in_menu’ => true,
‘query_var’ => true,
‘rewrite’ => true,
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘menu_position’ => null,
‘supports’ => array(‘editor’,’thumbnail’,’title’)
);
register_post_type(‘exposition’,$argsExpositions);Structure de mes permaliens :
/%category%/%postname%.htmlDans mon fichier category-expositions.php :
//On récupére tout le contenu de cette catégorie
$page = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
‘orderby’ => ‘post_date’,
‘order’ => ‘DESC’,
‘post_type’ => ‘exposition’,
‘post_status’ => ‘publish’,
‘posts_per_page’ => 2,
‘paged’=> $page
);
$posts = new WP_Query( $args );
//On parcoure les posts
while ( $posts->have_posts() ) : $posts->the_post();
//on récupere le post ID
$postId = get_the_ID();
//On prépare la récupération des metabox
$metaExpositions = get_post_meta($postId, ‘dateExposition’, TRUE);
//on affiche
echo ‘<div class="actu">‘;
echo ‘<div class="actuContent">‘;
echo ‘<h2>‘.get_the_title().’</h2>‘;
echo ‘<p class="actuDate">‘.$metaExpositions[‘reference’].’</p>‘;
the_content();
echo ‘</div>‘;
//On vérifit si il y a une miniature
if(has_post_thumbnail($postId)){
//Et on affiche
$thumbAttribut = array(
‘class’ => « actuThumb »
);
echo ‘<div class="containerThumbActu">‘;
echo get_the_post_thumbnail($postId,’thumbnail’,$thumbAttribut);
echo ‘</div>‘;
}
echo ‘</div>‘;
echo ‘<div class="spacer"></div>‘;
endwhile;
//La pagination
wp_pagenavi(array( ‘query’ => $posts ) );J’ai passé 2 heures à chercher une solution sur le net, beaucoup de résultat mais absolument rien qui ne marche chez moi.
ps : l’url générer par Wp Pagenavi est http://localhost/www.xxxxxxx.com/expositions/page/2
Est-ce que vous auriez une idée ?
Merci d’avance !
12 juillet 2011 à 12 h 55 min #781088Petit up 🙂
28 juillet 2011 à 10 h 20 min #781090Vraiment personne ? … 😕
28 juillet 2011 à 11 h 22 min #781091En gros, tu veux avoir des pages d’archives pour tes custom post type comme tu en aurais avec une catégorie « normale ».
Pour cela, ajoute‘has_archive’ => true,
dans le array de $argsExpositions
28 juillet 2011 à 12 h 28 min #781089Super, ca marche, merci Nival.
Pour les curieux, j’ai crée un fichier archive-expositions.php qui fait un include de mon fichier category-expositions.php (attention au ‘s’, le slug et le post type sont différents dans mon cas).
Il reste un p’tit soucis, du coup j’ai un 404 mes billets d’expositions, exemple d’url : http://www.ccccccccccc.com/expositions/mon-titre/
Mon register post type ressemble à ceci du coup :
$argsExpositions = array(
‘labels’ => $labelsExposition,
‘public’ => true,
‘publicly_queryable’ => true,
‘show_ui’ => true,
‘show_in_menu’ => true,
‘query_var’ => true,
‘rewrite’ => array(« slug » => « expositions »),
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘menu_position’ => null,
‘has_archive’ => true,
‘supports’ => array(‘editor’,’thumbnail’,’title’,’excerpt’)
);
//On enregistre les custom post type
register_post_type(‘photo’,$argsPhoto);Si vous avez une idée… 😉
28 juillet 2011 à 12 h 55 min #781092Ok alors la solution c’est de rajouter une règle de rewrite.
Dans mon cas :/**
* generateRewriteRules
*/
function generateRewriteRules($wp_rewrite) {
//On ajoute une règle pour la gestion de l’affichage d’une exposition
add_rewrite_rule(‘^expositions/([^/]*)?$’,’index.php?exposition=$matches[1]’,’top’);
//Et on flush les regles de réecriture
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
//Gestion du rewriting
add_action(‘generate_rewrite_rules’, ‘generateRewriteRules’);Voila voila.
5 septembre 2011 à 9 h 11 min #781093Bonjour à tous,
Ma configuration WP actuelle
– Version de WordPress : 3.2.1
– Version de PHP/MySQL :
– Thème utilisé :
– Extensions en place :
– Nom de l’hebergeur : sous wamp
– Adresse du site : localJ’ai un problème identique et j’ai le sentiment que la réponse est quelque part dans vos messages mais je ne m’en sors pas.
J’utilise des custom post type que j’ai créé avec l’extension Custom Post Type UI
J’utilise aussi Advanced custom fields pour créer le masque de saisie
Enfin j’ai créé à partir du fichier archive.php, un fichier qui se nomme liste-annonces.php dans lequel j’ai intégré des lignes comme :ID, ‘secteurs’, ‘<b>Secteur :</b> ‘, ‘, ‘, » ) ?>
Tout ça liste mes custom post comme je le souhaite.
Par contre en effet, avec wp page-navi, dès que je passe à la page suivante, comme posykrat, j’obtiens ma page 404.
J’ai lu attentivement vos réponses, mais je ne sais pas trouver l’endroit ou ajouter les lignes que vous donnez.
En fait si je comprends bien, vous déclarez vos CPT dans function.php, ou vous modifiez $args…
Et moi, je ne trouve pas où le plugin CPT UI, écrit ces lignes là….
Je ne sais pas si je suis très clair…Si vous pouviez m’aider….
Bien cordialement à tous
Dany
5 septembre 2011 à 11 h 55 min #781094Les lignes pour la gestion des règles de réecriture d’url doivent être mises dans ton fichier functions.php
Bon courage !
6 septembre 2011 à 8 h 11 min #781095Merci posykrat… Hélas… ça ne fonctionne pas….
Voici mon query post, (trouvé dans un forum anglophone)
$type,
‘post_status’ => ‘publish’,
‘paged’ => $paged,
‘posts_per_page’ => 3,
‘caller_get_posts’=> 1
);
$temp = $wp_query; // assign original query to temp variable for later use
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query($args);
?>et voici mon register post type (fourni par le plugin CPT UI)
register_post_type(‘annonce’, array( ‘label’ => ‘Annonce’,’description’ => »,’public’ => true,’show_ui’ => true,’show_in_menu’ => true,’capability_type’ => ‘post’,’hierarchical’ => false,’rewrite’ => array(‘slug’ => »),’query_var’ => true,’has_archive’ => true,’supports’ => array(),’taxonomies’ => array(‘salaries’,’activites’,’secteurs’,),’labels’ => array (
‘name’ => ‘Annonce’,
‘singular_name’ => ‘Annonce’,
‘menu_name’ => ‘Les annonces’,
‘add_new’ => ‘Ajouter une annonce’,
‘add_new_item’ => ‘Ajouter une annonce’,
‘edit’ => ‘Modifier’,
‘edit_item’ => ‘Modifier une annonce’,
‘new_item’ => ‘Nouvelle annonce’,
‘view’ => ‘Voir’,
‘view_item’ => ‘Voir une annonce’,
‘search_items’ => ‘Chercher une annonce’,
‘not_found’ => ‘Aucune annonce trouvée’,
‘not_found_in_trash’ => ‘Aucune annonce dans la poubelle’,
‘parent’ => ‘Parent Annonce’,
),) );Je patauge grave…..
Encore merci à tous
6 septembre 2011 à 8 h 16 min #781096Ajoute dans ton register post type :
‘publicly_queryable’ => true,
‘query_var’ => true,
rewrite’ => array(« slug » => « annonces »),
‘has_archive’ => true,et dans ton fichier functions.php
function generateRewriteRules($wp_rewrite) {
add_rewrite_rule(‘^annonces/([^/]*)?$’,’index.php?annonce=$matches[1]’,’top’);
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_action(‘generate_rewrite_rules’, ‘generateRewriteRules’);6 septembre 2011 à 12 h 42 min #781097Merci posykrat mais actuellement je ne sais pas où le plugin CPT UI crée le register post type… il ne fourni que le code…par contre dans quel fichier l’inscrit-il mystère…. J’ai beau fouiller les fichiers un par un, je ne trouve pas.
Du coup, le seul élément qui manque à mon register post type, que tu me fournis mais que je ne sais où mettre est : ‘publicly_queryable’ => true,
Aussi, j’obtiens une erreur du type « try to allocate …… » in function php on line XXX
Je ne peux donc même pas savoir si ta solution fonctionne ou pas.
Une idée ?
Mille merci en tous les cas.
6 septembre 2011 à 12 h 54 min #781098mmm,
tu n’as pas moyen d’éditer à la main dans le plugin les register post type ?
ca semble etre le cas dans les screenshot (http://wordpress.org/extend/plugins/custom-post-type-ui/screenshots/)
« Easily view and edit existing custom post types. Even « Get Code » generated by the plugin »c’est normal que tu trouves pas ou sont écris les register post type avec le plugin, cela doit être stocker en base et non pas écrit en dur dans un fichier.
Pour ton erreur, il faut plus d’infos, sur quel fichier cela arrive, quand tu fais quoi et le code d’erreur complet.
++
7 septembre 2011 à 15 h 40 min #781099Oui posykrat en effet, on peut accéder au code, tel que montré sur les screenshots, en revanche on ne peut enregistrer les modifs.
Cela dit en cherchant et cherchant encore, je me suis aperçu que la pagination fonctionnait avec les custom post type dans le fichier archive.php et la taxinomie que j’ai créé par la même occasione et les modifs que tu m’as données.
Ce qui ne marche pas par contre (erreur 404), c’est lorsque j’utilise un autre fichier que j’ai créé pour l’occasion et qui s’appelle pour mon usage liste_annonces.php.
Là où je suis surpris, c’est que c’est une copie conforme de mon fichier archive.php
C’est une nouvelle donne je sais, mais aurais tu une idée par hasard
En tous les cas, merci encore pour ta disponibilité
Bien cordialement
Dany
7 septembre 2011 à 16 h 45 min #781100Ton fichier devrait pas se nommer plutôt archive-annonces.php ? (comme c’est indiqué ici : http://codex.wordpress.org/images/1/18/Template_Hierarchy.png)
8 septembre 2011 à 8 h 08 min #781101Bonjour posykrat
Je ne connaissais pas cette règle de nommage de template. C’est bon à savoir mais ça ne change rien chez moi.
Puisque ça fonctionne avec les custom taxinomie, une solution qui me permettrait de contourner ce problème, ce serait de créer une taxinomie « TOUS ». Par contre dans ce cas, il me faudrait exclure cette catégorie de l’affichage, sinon ça ne ressemble à rien.Voici le code en question avec lequel j’affiche ça :
ID, ‘secteurs’, ‘<b>Secteur </b> ‘, ‘, ‘, » ) ?>
ce qui génère une liste de secteurs, séparés par des virgules : Secteur 1, secteur2, TOUS
Possible d’exclure la catégorie « tous » de l’affichage ?
Merci
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.