IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WordPress PHP Discussion :

Requete sur les posts avec champs custom


Sujet :

WordPress PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut Requete sur les posts avec champs custom
    J'ai rajouté 4 champs à mes posts au moyen de Pods.

    ordre => num
    debut_pub => date
    fin_pub => date
    actif => oui/non


    Cela me permet dasn un premier temps de filtrer uniquement sur les posts actifs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $args = array( 'posts_per_page' => 10,
                   'orderby' => 'meta_value_num',
                   'meta_key' => 'ordre',
                   'order' => 'ASC')
    Je suis incapable de trouver la syntaxe pour requeter sur NOW() BETWEEN debut_pub AND fin_pub
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Après avoir pas mal galéré avec cette syntaxe j'ai trouve eun solution qui fonctionne:
    $today = date("Y-m-d");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $args = array( 'posts_per_page' => 10,
                   'orderby' => 'meta_value_num',
                   'meta_key' => 'ordre',
                   'order' => 'ASC',
                    'meta_query' => array(
                                            'relation' => 'AND',
                                            array(
                                                'meta_key' => 'debut_pub',
                                                'compare' => '>=',
                                                'value' => $today,
                                                'type' => 'DATE'
                                            ),
                                            array(
                                                'meta_key' => 'fin_pub',
                                                'compare' => '<',
                                                'value' => $today,
                                                'type' => 'DATE'
                                            )
                                        )
                   );
    Si il y a mieux je suis preneur ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    C'est vraiment à vomier cette syntaxe ...
    j'ai eu besoin de rajouter le champs actif dans la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     'meta_query' => array(   'key' => 'actif',
                                            'value'   => 1,
                                            'relation' => 'AND',
                                            array(
                                                'meta_key' => 'debut_pub',
                                                'compare' => '>=',
                                                'value' => $today,
                                                'type' => 'DATE'
                                            ),
                                            array(
                                                'meta_key' => 'fin_pub',
                                                'compare' => '<',
                                                'value' => $today,
                                                'type' => 'DATE'
                                            )
                                        )
    Du coup c'est complètement illisible...
    Il n'y aurait pas une syntaxe plus maintenable ?

    On ne voit absolument pas que le AND concerne les deux comparaisons
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 698
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 698
    Par défaut
    à l'intérieur de tableau "meta_query", il faut utiliser "key" et non "meta_key".

    si tu veux enregistrer dans le journal la requete qui est générée tu peux ajouter un filtre comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    	function journal_requete_sql($posts, $wp_query)
    	{
     
    		error_log(var_export($wp_query->request, TRUE));
     
    		return $posts;
     
    	}
     
     
    	add_filter("posts_pre_query", "journal_requete_sql", 10, 2);
     
     
    	$today = date("Y-m-d");
     
    	$arguments = [
    		'posts_per_page' => 10,
    		'orderby' => 'meta_value_num',
    		'meta_key' => 'ordre',
    		'order' => 'ASC',
    		'meta_query' => [
    			'relation' => 'AND',
    			[
    				'key' => 'actif',
    				'value' => 1,
    			],
    			[
    				'key' => 'debut_pub',
    				'compare' => '>=',
    				'value' => $today,
    				'type' => 'DATE'
    			],
    			[
    				'key' => 'fin_pub',
    				'compare' => '<',
    				'value' => $today,
    				'type' => 'DATE'
    			],
    		],
    	];
     
    	get_posts($arguments);
     
     
    	remove_filter("posts_request", "journal_requete_sql");

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    à l'intérieur de tableau "meta_query", il faut utiliser "key" et non "meta_key".
    Et pourtant cela fonctionne

    Je crois même qu'avec key cela ne fonctionnait pas, je précise que ce sont des camps customs ajoutés avec PODS

    Enregistrer la requête ?
    C'est déja assez compliquer de faire juste une simple requête avec cet usine à gaz !!!
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Impossible d'envoi une requete sur ma table avec les button
    Par naijik dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/05/2015, 23h51
  2. Requete sur plusieurs table avec les memes champs
    Par broule dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/02/2010, 19h57
  3. [MySQL] Requete sur 2 tables avec champs commun
    Par marcd dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/04/2006, 16h14
  4. Focus sur les boutons avec plusieurs formulaire
    Par davids21 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/04/2005, 15h48
  5. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo