8721 sujets

Développement web côté serveur, CMS

Bonjour à tous,

d'abord et avant tout : je suis nouveau ici, 1er message sur Alsacréa, 1er message sur un forum tout court, 1 an de code dans les jambes, bon niveau HTML CSS, niveau moyen en PHP, faible en POO, bille en JS, mais j'apprends et m'intéresse...merci d'avance pour votre indulgence Smiley biggrin
Je bloque sur un petit problème aujourd'hui, et ne trouve pas de réponse adéquate à ma question sur le web (où je ne les comprends pas je ne sais pas)...Avant de l'exposer, je situe le contexte en une phrase : je développe un intranet sous Wordpress dans le cadre d'un stage de formation dans le développement web. Je suis seul, c'est à dire aucune aide physique possible pour moi dans cet entreprise, il y a un administrateur réseau mais n'a aucunes connaissances en développement web et ne code pas (ni PHP ni HTML ni JS) je dois donc me débrouiller seul, d'ou ce message. Ca fait 2 phrases mais bon vous êtes indulgents Smiley smile
Mon problème en une phrase aussi : J'ai créé une fonction php dans mon child thème pour changer le statut d'un post wordpress, et voudrai l'appeler au clic sur un bouton.
Je précise : les articles crées (côté front grace au thème) sont crées par défaut avec le statut 'pending' (c'est voulu pour permettre une relecture avant publication...), j'ai donc crée un template de page qui regroupe tous les articles en attente de validation (avec la requête query_post qui va bien...). Dans cet page, je voudrai maintenant un bouton en face de chaque article qui permet de publier l'article en question (le but étant d'éviter au membre d'aller dans le back-office de Wordpress pour publier l'article). J'ai donc créé ma petite fonction php pour ça et la problème ! Comment faire pour appeler ma fonction (qui déclenchera le changement de statut de l'article et donc le publiera) au clic sur le bouton ? Je sais que le php est un langage serveur et qu'il ne gère pas les évènements sur la page...après mes recherches sur le web, je crois comprendre que la solution est l'ajax mais je suis perdu, je ne comprends pas comment faire pour appeler ma fonction php...Si quelqu'un est susceptible de m'aider ici, je lui en serai très reconnaissant, sachez que le moindre petit conseil pourrait m'être d'une grande aide Smiley smile Merci d'avance pour vos réponses,

ma fonction php pour changer le statut du post :
function change_post_status( $post_id, $status ){
     $current_post = get_post( $post_id, 'ARRAY_A' );
     $current_post[ 'post_status' ] = $status;
     wp_update_post( $current_post );
}


le code php pour relire ou publier le post :
//Récuparation du slug de la première catégorie du post pour l'insérer dans le bouton

            $cat_slug = '';
            foreach((get_the_category()) as $category) {
                $cat_slug .= $category->slug.',';
            };
            $slugDeLaPremiereCat = explode(",", $cat_slug);
			
			echo '<div class="intern-box center">';

            //Création des boutons pour relire ou publier le post
			echo '<a href="'.get_the_permalink().'" class="btn btn-default"><i class="fa fa-arrow-right"></i> '.__('Relire','woffice').'</a>';
            echo '<a href="http://ouranos.res.astorg.com/'.$slugDeLaPremiereCat[0].'"><i class="fa fa-check-square-o"></i>'.__('Publier cet article','woffice').'</a>';
            //je voudrai appeler ma fonction php ici (qui modifie le statut du post) puis qui renvoit vers la page ou est publié le post au clic sur ce lien 
            //change_post_status($IDduPost, 'publish');

			echo '</div>';
		echo '</div>'; ?>


Encore merci pour toute aide que vous pourrez m'apportez, et si je peux apporter d'autres précisions, n'hésitez pas !

Olivier
Smiley biggrin
Problème résolu en me creusant un peu les méninges !
je décris rapidement comment j'ai procédé si ça peut en aider certains :

1/J'ai passé l'ID du post dans l'URL :

echo '<a href="';
            while($IDdivise[$t1]){
                if($IDdivise[$t1] == "166"){
                    echo $slugActu."?IDduPost=".$IDduPost;
                }else if($IDdivise[$t1] == "170"){
                    echo $slugActuDernieresNouvelles;
                }
                $t1++;
            }
            echo '" class="btn btn-default ';
            while($IDdivise[$t2]){
                if(($IDdivise[$t2] == "166") || ($IDdivise[$t2] == "170")){
                    echo 'iconeActu ';
                }
                $t2++;
            }
            echo '"><i class="fa fa-check-square-o"></i>'.__('Publier','woffice').'</a>';


2/J'ai récupérer cet ID du post sur ma page d'arrivée avec un $_GET
3/ J'ai appelé ma fonction dans un if(isset($_GET['IDduPost']) en début de page :

if(isset($_GET["IDduPost"])){
    change_post_status( $caMarche, 'publish' );
}
?>


et tout fonctionne parfaitement ! Smiley smile Smiley smile Smiley smile
Peut-être à bientôt sur Alsacréation pour un autre problème Smiley cligne