Plugin Directory

Changeset 1782839


Ignore:
Timestamp:
12/07/2017 05:02:16 PM (8 years ago)
Author:
bgin
Message:

Suppression d'un dysfonctionnement : perte de la sélection d'un post lors de la mise à jour de celui-ci.

Location:
org-frontpage/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • org-frontpage/trunk/org-frontpage-plugin-admin.php

    r1768819 r1782839  
    1919        }
    2020        }
    21         unset($_REQUEST['action'] ); // ne faudrait-iil pas 'save' au lieu de 'action'
     21        unset($_REQUEST['save'] ); // remplacé 'action' par 'save' le 7/12/2017 ... à surveiller
    2222       
    2323}
  • org-frontpage/trunk/org-frontpage.php

    r1768819 r1782839  
    33Plugin Name: Organisation FrontPage
    44Description: Adding a meta box in the post editor to set the rank of post in the home page
    5 Version: 1.4.7
     5Version: 1.5
    66Author:      B Gineste
    77Text Domain: org-frontpage
     
    1111*/
    1212?><?php
    13 $en_test = true;
     13$en_test = false;
    1414
    1515class org_frontpage {
     
    2828    // tableau des libellés (pour la saisie dans la méta box)
    2929    private $_libelles = array();
     30    //fichier mouchard-org-fpg
     31    private $_f;
     32    private $_trace = false;
    3033   
    3134    function __construct() {
     
    3336        add_action( 'plugins_loaded', array($this,'org_frontpage_load_plugin_textdomain') );
    3437
     38        //ouverture du mouchard
     39        if ($this->_trace) { $this->_f=fopen($_SERVER['DOCUMENT_ROOT'].'\mouchard-org-fpg.txt','a+'); }
    3540        //définition des variables globales
    3641            // Nombre de posts en frontpage (méta donnée dans wp_options)
     
    5156            for ($i=1;$i<=$this->_nb_posts_frontpage;$i++) {$this->_option_names[$i] = "ofp_post_frontpage_".$i; }
    5257            // tableau des valeurs dans wp_options (option_value)
    53             foreach ($this->_option_names as $option_name) {$this->_option_values[$option_name]=get_option($option_name); }
     58            foreach ($this->_option_names as $option_name) {
     59                //après une mise à jour du post, l'option_value prend la valeur de l'ID du post révision, il faut rétablir l'ID du post parent
     60                //cet inconvénient  ne semble pouvoir être évité, même si les options ont 'no' comme valeur du champ autoload
     61               
     62                $thepost_id = get_option($option_name);
     63                $thepost = get_post($thepost_id);
     64                if ($thepost->post_parent > 0) {
     65                    $thepost_revision_id = $thepost_id;
     66                    $thepost_id = $thepost->post_parent;
     67                    update_option($option_name,$thepost_id);
     68                    if ($this->_trace) {
     69                        fwrite($this->_f,"Rétabli post parent"."\r\n");
     70                        fwrite($this->_f,$thepost_revision_id." ".$thepost->post_parent."\r\n");
     71                    }
     72                }
     73                $this->_option_values[$option_name]=$thepost_id;
     74                }
    5475            // tableau des libellés (pour la saisie dans la méta box) : initialisé au moment de l'utiliser  (fonction les_libelles) : ici, il n'est pas traduit
    55             /*
    56             $libelles["pas_sur_frontpage"]="Pas sur la page d'accueil";
    57             $i=1;
    58             foreach ($this->_option_names as $option_name) {$libelles[$option_name]="N° ".$i." / page d'accueil"; $i++;}
    59             */
     76
    6077            add_action('add_meta_boxes', array($this,'rang_post_meta_box_add' ));
    6178            add_action('save_post', array($this,'rang_post_meta_box_save' ));
     
    8097    }
    8198
    82 
     99    function __destruct() {
     100        if ($this->_trace) { fclose($this->_f); }
     101    }
    83102/*
    84103============================================================================================================================
     
    102121    $this->generer_les_libelles();
    103122    // déterminer le rang de l'article sur la frontpage (par son option_name)
     123    // ici on pourrait vérifier que le post n'a pas de parent. Et le cas échéant remplacer l'ID du post par l'ID du parent (semble inutile)
     124    //$post_id = $post->ID;
     125    //if ($post->post_parent > 0) {$post_id = $post->post_parent; }
     126    //$rang_post = array_search($post_id,$this->_option_values);
    104127    $rang_post = array_search($post->ID,$this->_option_values);
     128   
    105129    if ($rang_post == false) {$rang_post="pas_sur_frontpage";}
     130   
    106131    ?>
    107132    <div id="box-org-frontpage" style="display: flex; flex-wrap: wrap;">
     
    111136                // We'll use this nonce field later on when saving.
    112137                 wp_nonce_field( basename( __FILE__ ), 'organisation_frontpage' );
     138                 //echo $post->ID; echo " - "; echo $post_id; echo " - "; echo $rang_post;
    113139            ?>
    114140            <label for="rang_frontpage"><?php _e( 'Post location', 'org-frontpage' ); ?> </label>
     
    127153                $nom_option = "ofp_post_frontpage_".$i;
    128154                $post_id = get_option($nom_option);
    129                 $titre='';
    130                 $article=null;
    131                 if (!empty($post_id)) {
    132                     $article = get_post( $post_id );
    133                 }
    134                 if (!empty($article)) {
    135                     $titre = $article->post_title;
     155                if ($post_id != false) {
     156                $article = get_post( $post_id );
     157                $titre = $article->post_title;
    136158        ?>
    137159        <!--Articles -->
     
    158180function rang_post_meta_box_save( $post_id )
    159181{
     182    if ($this->_trace) { fwrite($this->_f,"\r\n"."Début séquence save ".date('d/m/Y H:i')."\r\n"); }
     183
    160184    $this->generer_les_libelles();
    161185    // Bail if we're doing an auto save
     
    175199        // déterminer le rang précédent de l'article sur la frontpage
    176200        $name_option_post_prec = array_search($post_id,$this->_option_values);
    177         if ($name_option_post_prec == false) {$name_option_post_rec="pas_sur_frontpage";}
     201            fwrite($this->_f, "name_option_post_prec (devrait être false si pas sur la frontpage) :");
     202            fwrite($this->_f,$name_option_post_prec."\r\n");
     203        if (empty($name_option_post_prec)) {$name_option_post_rec="pas_sur_frontpage";}
     204        if ($this->_trace) {
     205           
     206            fwrite($this->_f, "Post ID :");
     207            fwrite($this->_f,$post_id."\r\n");
     208           
     209            fwrite($this->_f, "libelle_frontpage :");
     210            fwrite($this->_f,$libelle_frontpage."\r\n");
     211            fwrite($this->_f,"name_option_post :");
     212            fwrite($this->_f,$name_option_post."\r\n");
     213            fwrite($this->_f,"name_option_post_prec :");
     214            fwrite($this->_f,$name_option_post_prec."\r\n");
     215            fwrite($this->_f,"Id des stickés (courant ".$post_id.") : "."\r\n");
     216       
     217            //var_dump(get_post($post_id));
     218            foreach($this->_option_values as $opt) {
     219                $article = get_post( $opt );
     220                fwrite($this->_f,$article->post_title." - ");
     221                fwrite($this->_f,$opt."\r\n");
     222                }
     223           
     224            foreach($this->_libelles as $lib) {
     225                fwrite($this->_f,$lib."\r\n");         
     226            }
     227        }
    178228       
    179229        if ($name_option_post != $name_option_post_prec) {
    180             if ($name_option_post_prec != "pas_sur_frontpage") { update_option($name_option_post_prec,FALSE); }
    181             if ($name_option_post != "pas_sur_frontpage") { update_option($name_option_post,$post_id); }
     230            if ($name_option_post_prec == "pas_sur_frontpage") {
     231                update_option($name_option_post,$post_id);
     232                    if ($this->_trace) {
     233                        fwrite($this->_f,"UPDATE name_option_post :"."\r\n");
     234                        fwrite($this->_f,$name_option_post.' : '.$post_id."\r\n");
     235                    }
     236}
     237            if ($name_option_post == "pas_sur_frontpage") {
     238                update_option($name_option_post_prec,FALSE);
     239                    if ($this->_trace) {
     240                        fwrite($this->_f,"UPDATE name_option_post_prec :"."\r\n");
     241                        fwrite($this->_f,$name_option_post_prec.' : false'."\r\n");
     242                    }
     243                }
     244            if ($name_option_post_prec != "pas_sur_frontpage" && $name_option_post != "pas_sur_frontpage") {
     245                update_option($name_option_post_prec,FALSE);
     246                update_option($name_option_post,$post_id);
     247                    if ($this->_trace) {
     248                        fwrite($this->_f,"UPDATE name_option_post_prec :"."\r\n");
     249                        fwrite($this->_f,$name_option_post_prec.' : false'."\r\n");
     250                        fwrite($this->_f,"UPDATE name_option_post :"."\r\n");
     251                        fwrite($this->_f,$name_option_post.' : '.$post_id."\r\n");
     252                    }
     253            }
     254           
    182255        }           
    183256    }
    184        
     257        if ($this->_trace) {
     258            fwrite($this->_f, "Post ID :");
     259            fwrite($this->_f,$post_id."\r\n");
     260            foreach($this->_option_values as $opt) {
     261                $article = get_post( $opt );
     262                fwrite($this->_f,$article->post_title." - ");
     263                fwrite($this->_f,$opt."\r\n");
     264            }
     265        }
     266//  fclose($f);         
    185267}
    186268
  • org-frontpage/trunk/readme.txt

    r1768819 r1782839  
    44Requires at least: 4.4.0
    55Tested up to: 4.9
    6 Stable tag: 1.4
     6Stable tag: 1.5
    77License: GPLv2 or later
    88License URI: https://www.gnu.org/licenses/gpl-2.0.html
    99
    10 Permet de choisir les posts qui doivent figurer sur la frontpage.
     10Permet de choisir et agencer les posts de la frontpage.
    1111
    1212== Description ==
     
    6161= Ce plugin est-il nécessaire ? =
    6262
    63 J'ai éprouvé le besoin de marquer les posts à mettre en évidence sur la page d'accueil des blogs que je gère
     63Je souhaitais choisir les posts à mettre sur la page d'accueil et les disposer selon leur niveau d'importance
    6464et je n'ai pas trouvé le moyen de le faire simplement.
     65
     66= Il existe un moyen simple de désigner les articles à mettre en avant (attribut sticky disponible dans le tableau de bord). Ne permet-il pas de faire la même chose sans plugin ? =
     67
     68Hélas non !
     69On pourrait en effet donner l'attribut sticky aux posts qu'on souhaite mettre sur la page d'accueil, mais cela ne permet pas de les agencer à sa convenance sur cette page : on peut en effet les récupérer classés par date et les afficher dans cet ordre, mais il est impossible de les classer à son gré.
     70Le plugin org-frontpage permet une mise en page fine car il introduit un attribut de classement (Numéro 1, 2, 3,...) des posts sélectionnés. Ce clasement pourra être exploité pour positionner les articles dans des emplacements dédiés au posts 1, 2, 3 ...
     71
     72De plus, contrairement au système natif de mise en avant, les articles retenus pour la frontpage ne viennent pas automatiquement en tête des listes d'articles de type blog.
     73 
    6574
    6675= Comment savoir quels sont les posts épinglés à la page d'accueil ? =
    6776
    68 On peut évidemment les voir sur le blog, mais aussi à partir du tableau de bord, dans le sous-menu *Org frontpage* du menu *Réglages* .
     77On peut évidemment les voir sur le blog, mais aussi à partir du tableau de bord, dans le sous-menu *Org frontpage* du menu *Réglages* . Le rang des posts choisis apparaît également dans une colonne supplémentaire le la liste de tous les articles.
    6978
    7079= Pourquoi ce readme est-il en français ? =
     
    115124= 1.4.7 =
    116125* Correction d'un bug
     126
     127= 1.5 =
     128* Correction d'un dysfonctionnement : lorsque on procède à la mise à jour d'un post marqué pour la page d'accueil, la sélection était perdue et il fallait la rétablir.
Note: See TracChangeset for help on using the changeset viewer.