[WP.org] regle particuliere au url, action pre_get_posts

  • Avatar de Inconnu

    je veux appliquer une regle particuliere au url

    je procede en utilisant l’action
    add_action(‘pre_get_posts’, array(&$this, « pre_get_posts ») );

    la fonction « pre_get_posts » est plus bas

    si j’affecte $query->is_page = TRUE
    alors j’ai des erreurs :
    « Trying to get property of non-object in /www/htdocs/dossiers/portail_phaneuf/wp-includes/query.php on line 3324 »
    c’est la fonction function is_page( $page =  » ) !?

    si $query->is_page = NULL OU FALSE
    je n’ai pas d’erreur de traitement suaf que le mauvais template / model est utulisé
    WP ne trouve pas le bon template / model qui devrait etre le model affecter dans ce post ( defaut ou specifique )

    y a un pro qui m’indiquer quelques piste ?

    function pre_get_posts($arg)<br />
        {<br />
           /*<br />
            ref sur le sujet<br />
            http://codex.wordpress.org/Plugin_API/Filter_Reference/request<br />
            http://codex.wordpress.org/Custom_Queries<br />
            http://codex.wordpress.org/Function_Reference/query_posts<br />
            http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_where<br />
            http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_request<br />
           */</p>
    <p>        $mod = FALSE;<br />
            $str_url = $this->get_curURL();<br />
            if ( (strpos($str_url, "wp-admin") === FALSE) )<br />
            {</p>
    <p>           $query = $arg;<br />
               $query_int = $arg;</p>
    <p>           /*<br />
                segmentation :<br />
                    wp_url/segment_0/segment_1/segment_2/</p>
    <p>            possibilités :<br />
                    lang/categorie/slug<br />
                    lang/slug<br />
                    categorie/slug<br />
                    slug<br />
                */<br />
               $arr_segments = $this->get_segments();<br />
               $s = array(<br />
                   "lang" => NULL,<br />
                   "cat" => NULL,<br />
                   "slug" => NULL); </p>
    <p>           if ( count($arr_segments) > 0 )<br />
               {<br />
                   // calcul structutre<br />
                   if( in_array($arr_segments[0], array("fr","en")) )<br />
                   {<br />
                       $s["lang"] = $arr_segments[0];<br />
                       if( isset($arr_segments[1]) )<br />
                       {<br />
                           if( isset($arr_segments[2]) )<br />
                           {<br />
                               // possibilité : lang/categorie/slug<br />
                               $s["cat"] = $arr_segments[1];<br />
                               $s["slug"] = $arr_segments[2];<br />
                           }<br />
                           else<br />
                           {<br />
                               // possibilité : lang/slug<br />
                               $s["slug"] = $arr_segments[1];<br />
                           }<br />
                       }<br />
                   }<br />
                   else<br />
                   {<br />
                       if( isset($arr_segments[1]) )<br />
                       {<br />
                           // possibilité : categorie/slug<br />
                           $s["cat"] = $arr_segments[0];<br />
                           $s["slug"] = $arr_segments[1];<br />
                       }<br />
                       else<br />
                       {<br />
                           // possibilité : slug<br />
                           $s["slug"] = $arr_segments[0];<br />
                       }<br />
                   }</p>
    <p>               // applique regle à la structure, sera selon dictionnaire FR/EN<br />
                   // 'post_type' => 'commerce',<br />
                   // $post_type = "post";<br />
                   // $post_type = "page";<br />
                   //<br />
                   $mod = FALSE;<br />
                   $post_type = "page";<br />
                   if ( $s["slug"] == "parking" )<br />
                   {<br />
                       $s["slug"] = "stationement";<br />
                       $mod = TRUE;<br />
                       $post_type = "page";<br />
                   }</p>
    <p>               // altere requete si stucture modifier<br />
                   if ($mod)<br />
                   {<br />
                         // si on modifi la requet sql<br />
                         // $where = " AND (wp_posts.post_name='".$s["slug"]."') AND (wp_posts.post_type = '".$post_type."') AND (wp_posts.post_status = 'publish') ";</p>
    <p>                     // si on modifie $query</p>
    <p>                     // $arr_query = array();<br />
                         if (isset($s["slug"]))<br />
                         {<br />
                             $query->query_vars["pagename"] = $s["slug"];<br />
                             $query->query_vars["category_name"] = "";<br />
                             $query->query_vars["tax_query"] = NULL;<br />
                             $query->is_category = FALSE;<br />
                             $query->is_archive = FALSE;<br />
                             $query->is_404 = FALSE;<br />
                             $query->is_search = FALSE;<br />
                             $query->is_tax = FALSE;<br />
                             $query->is_front_page = FALSE;<br />
                             $query->is_home = FALSE;<br />
                             $query->is_attachment = FALSE;<br />
                             $query->is_single = FALSE;<br />
                             $query->is_tag = FALSE;<br />
                             $query->is_author = FALSE;<br />
                             $query->is_date = FALSE;<br />
                             $query->is_archive = FALSE;<br />
                             $query->is_comments_popup = FALSE;<br />
                             $query->is_paged = FALSE;</p>
    <p>// ***********************************************************<br />
    // si $query->is_page = TRUE<br />
    // j'ai des erreurs :<br />
    // "Trying to get property of non-object in /www/htdocs/dossiers/portail_phaneuf/wp-includes/query.php on line 3324"<br />
    // c'est la fonction function is_page( $page = '' ) !<br />
    //<br />
    // si $query->is_page = NULL OU FALSE<br />
    // WP ne trouve pas le bon template / model qui devrait etre le model affecter dans ce post ( defaut ou specifique )<br />
                             $query->is_page = NULL;<br />
                         }</p>
    <p>                     $query->query_vars["include"] = '';<br />
                         $query->query_vars["post_status"] = 'publish';<br />
                         $query->query_vars["post_type"] = $post_type;<br />
                         $query->query_vars["post__in"] = array();</p>
    <p>                 }<br />
                }</p>
    <p>        return;<br />
        }

    L’adresse du blog concerné est (visible uniquement pour les utilisateurs connectés).

  • Avatar de Inconnu

    Je regrette, mais vous n’êtes pas dans le bon forum, car votre site utilise WordPress (mais n’est pas hébergé par WordPress.com).

    Lisez attentivement le message qui apparaît en évidence à la page d’accueil :
    https://fr.forums.wordpress.com/topic/message-important-a-lire-avant-dutiliser-ces-forums?replies=1 (premier point)

  • Le sujet ‘[WP.org] regle particuliere au url, action pre_get_posts’ est fermé aux nouvelles réponses.