Je cherche à obtenir la liste des mes CPT PODS pour en faire des items de select ...
Version imprimable
Je cherche à obtenir la liste des mes CPT PODS pour en faire des items de select ...
il y a cette fonction qui défini tous les types définis sur le site :
https://developer.wordpress.org/refe...et_post_types/
Mhhhh j'en étais là aussi , mais je reste perplexe avec ce que je récupère :
Code:
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 Array ( [post] => post [page] => page [attachment] => attachment [revision] => revision [nav_menu_item] => nav_menu_item [custom_css] => custom_css [customize_changeset] => customize_changeset [oembed_cache] => oembed_cache [user_request] => user_request [wp_block] => wp_block [wp_template] => wp_template [wp_template_part] => wp_template_part [wp_global_styles] => wp_global_styles [wp_navigation] => wp_navigation [_pods_template] => _pods_template [wpum_directory] => wpum_directory [wpforms] => wpforms [_pods_pod] => _pods_pod [_pods_group] => _pods_group [_pods_field] => _pods_field [agence] => agence [slide] => slide )
Mais pour mon select il ne me faudrait que
pour post et page il faudrait que j'en extraie les champs customCode:
1
2
3
4
5
6 [post] => post [page] => page [agence] => agence [slide] => slide
et pour agence et slide il faudrait que je puisse filtrer pour savoir que ce sont des pods exportables ... mais je ne vois pas comment
à moins de leur rajouter un champs exportable ?
pour les champs des articles et des pages, ça fonctionne comme n'importe quel type, donc une fois que tu as l'identifiant de l'objet tu peux travailler avec les champs en utilisant ces fonctions :
https://developer.wordpress.org/apis/handbook/metadata/
et cette fonction peut retourner tous les champs d'un objet :
https://developer.wordpress.org/refe...get_post_meta/
pour les types "agence" et "slide" tu demandes cela parce qu'en fonction des différents sites, les types n'ont pas le même nom ? qui va créer ces différents types ?
Il se peut en effet que selon les sites les types ne soient pas les mêmes ou varient en nombre ou seront provisoires ... d'ou le besoin de variabliser et trouver un moyen de déterminer les types exportables ..
je viens de pense à une particularité des extensions wordpress qui est qu'elles peuvent facilement communiquer entre elles.
donc par exemple sur chaque site, tu peux avoir une extension spécifique qui contient une liste de types en dur dans le code php. et ensuite sur chaque site tu auras une extension commune qui va récupérer cette liste et faire le traitement.
est ce que déjà du point de vue théorique tu pense que ça pourrait t'aider ou bien ça ne convient pas avec l'architecture que tu as en place ?
En effet je n'avais pas pensé à cette possibilité de fichier listant les types CPT exportables.
Mais cela voudrait dire que ce fichier est figé pour chaque site et non dynamique ce qui serait blocant si je délègue la création de PODS, a moins de trouver un système de mise à jour du fichier lors de la création ou suppression de POD ...
Je pense que je vais être obligé de passer par un champs custom dans le CPT et tester l'existance de ce champs pour générer la liste ?
si la liste n'est pas fixe, tu peux la stocker dans la base de données dans une "option" :
https://developer.wordpress.org/apis/handbook/options/
ce que je fais souvent dans mes extensions c'est un seule option du nom de l'extension qui contient un tableau avec plusieurs clés. comme ça en fonction des besoins futurs tu pourras ajouter des clés au tableau.
Donc stocker l'option "exportable" de CPT daans une otion et la mettre à jour à là création supression ou modification d'un POD.
ça me rajoute une couche de dev sur les CPT avec une case à cocher "exportable" ce qui revient à rajouter un champ au CPT non ?
si tu rajoutes un champ, c'est dans le cas où tu l'utilises pour chaque objet comme le prix de chaque produit.
là c'est une valeur à enregistrer au niveau du site donc tu en as juste besoin une fois.
Oui donc une option globale au CPT, mais comment je l'update à la création ou modification de mes PODS ?
J'ai toujours cette barrière de devoir intervenir sur l'existant pour y rajouter des opérations de mise à jour et je ne sasi pas à quel niveau ça se passe :(
si tu veux "écouter" la création et la suppression types dans l'extension pods, c'est normal que tu trouves ça plus compliqué parce que là il faut lire le code de cette extension pour comprendre comment elle fonctionne.
et donc tu peux faire cela par exemple :Code:
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 add_action("save_post__pods_pod", function ($post_ID, $post, $update) { $option_NomExtension = get_option("NomExtension"); if (!isset($option_NomExtension["liste_types"])) { $option_NomExtension["liste_types"] = []; } $option_NomExtension["liste_types"][] = $post->post_name; update_option("NomExtension", $option_NomExtension); }, 10, 3); add_action("deleted_post", function ($post_ID, $post) { if ("_pods_pod" !== $post->post_type) { return; } $option_NomExtension = get_option("NomExtension"); $option_NomExtension["liste_types"] = array_diff( $option_NomExtension["liste_types"] , [$post->post_name] ); update_option("NomExtension", $option_NomExtension); }, 10, 2);
OUi !! c'est exactement ça mon souci est souvent de pouvoir écouter les actions pour faire d'autres actions custom ...Citation:
si tu veux "écouter"
Si en plus a chaque fois ça dépende du développement du plugin ... :aie: