Toutes mes réponses sur les forums
-
AuteurMessages
-
13 avril 2025 à 19 h 35 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2487912
😂 Désolé Flobogo. Je pensais que ça partais d’une bonne intention…
13 avril 2025 à 15 h 05 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2487899Bonjour, et merci BKaernet… Mais, en fait, depuis février j’ai trouvé la solution… c’était un snippet qui posait problème. Depuis ça fonctionne plutôt bien. Mais le mu-plugin a été modifié depuis. Après, oui, du code AI dans Woocommerce… Mais ça reste du code, et plutôt bien écrit…
Pour le poids des requêtes, en fait j’ai abandonné mon commerce en ligne, et grandement modifié et allégé mes pages… Ce n’est pas encore le top (selon GreenIT), mais ce n’est pas si mal…
22 février 2025 à 19 h 27 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2486239Bonjour à toutes et à tous. Bon me revoilà avec mes custom-columns… qui ne fonctionnent plus. Enfin plus comme avant (c’était mieux avant…). En fait ça fonctionne à moitié, les colonnes sont créées, les ID s’affichent mais plus moyen de les trier. J’avais fait une « mise à jour » de mon mu-plugin avec ce code :
<?php
// ------------------------------------------------------------------------
// Colonnes personnalisées et recherche par ID
// ------------------------------------------------------------------------
// Vérifie si les fonctions existent avant de les déclarer pour éviter les erreurs de redéfinition
if ( ! function_exists( 'add_post_id_column' ) ) {
// Ajouter une nouvelle colonne pour les IDs des articles
function add_post_id_column($columns) {
$columns['post_id_clmn'] = __('ID', 'textdomain');
return $columns;
}
add_filter('manage_posts_columns', 'add_post_id_column');
}
if ( ! function_exists( 'display_post_id_column_content' ) ) {
// Afficher le contenu de la colonne ID pour les articles
function display_post_id_column_content($column, $post_id) {
if ($column === 'post_id_clmn') {
echo $post_id;
}
}
add_action('manage_posts_custom_column', 'display_post_id_column_content', 10, 2);
}
if ( ! function_exists( 'add_page_id_column' ) ) {
// Ajouter une nouvelle colonne pour les IDs des pages
function add_page_id_column($columns) {
$columns['page_id_clmn'] = __('ID', 'textdomain');
return $columns;
}
add_filter('manage_pages_columns', 'add_page_id_column');
}
if ( ! function_exists( 'display_page_id_column_content' ) ) {
// Afficher le contenu de la colonne ID pour les pages
function display_page_id_column_content( $column, $post_id ) {
if ( $column === 'page_id_clmn' ) {
echo $post_id;
}
}
add_action( 'manage_pages_custom_column', 'display_page_id_column_content', 10, 2 );
}
if ( ! function_exists( 'post_id_column_style' ) ) {
// Style pour les colonnes ID
function post_id_column_style() {
echo '<style>
.column-post_id_clmn, .column-page_id_clmn { width: 80px; }
</style>';
}
add_action('admin_head', 'post_id_column_style');
}
if ( ! function_exists( 'search_by_post_or_page_id' ) ) {
// Recherche par ID pour les articles et les pages
function search_by_post_or_page_id( $query ) {
global $pagenow;
error_log( 'Function called: search_by_post_or_page_id' );
error_log( 'Pagenow: ' . $pagenow );
error_log( 'Search term: ' . ( isset( $_GET['s'] ) ? $_GET['s'] : 'Not set' ) );
if ( is_admin() && $pagenow == 'edit.php' && isset( $_GET['s'] ) && ! empty( $_GET['s'] ) ) {
$post_id = absint( $_GET['s'] );
error_log( 'Post ID: ' . $post_id );
if ( $post_id > 0 ) {
$query->query_vars['p'] = $post_id;
$query->query_vars['s'] = '';
error_log( 'Query modified for ID: ' . $post_id );
}
}
}
add_action( 'pre_get_posts', 'search_by_post_or_page_id' );
}
if ( ! function_exists( 'add_product_category_id_column' ) ) {
// Ajouter une nouvelle colonne pour les IDs des catégories de produits
function add_product_category_id_column($columns) {
$columns['product_category_id'] = __('ID', 'textdomain');
return $columns;
}
add_filter('manage_edit-product_cat_columns', 'add_product_category_id_column');
}
if ( ! function_exists( 'display_product_category_id_column_content' ) ) {
// Afficher le contenu de la colonne ID pour les catégories de produits
function display_product_category_id_column_content($content, $column_name, $term_id) {
if ($column_name === 'product_category_id') {
$content = $term_id;
}
return $content;
}
add_filter('manage_product_cat_custom_column', 'display_product_category_id_column_content', 10, 3);
}
if ( ! function_exists( 'product_category_id_column_style' ) ) {
// Style pour aligner les identifiants au centre
function product_category_id_column_style() {
echo '<style>
.column-product_category_id { width: 100px; text-align: center; }
</style>';
}
add_action('admin_head', 'product_category_id_column_style');
}
if ( ! function_exists( 'search_by_product_category_id' ) ) {
// Recherche par ID pour les catégories de produits
function search_by_product_category_id( $query ) {
global $pagenow;
$taxonomy = isset($_GET['taxonomy']) ? sanitize_text_field($_GET['taxonomy']) : '';
error_log('Function called: search_by_product_category_id');
error_log('Pagenow: ' . $pagenow);
error_log('Taxonomy: ' . $taxonomy);
error_log('Search term: ' . (isset($_GET['s']) ? $_GET['s'] : 'Not set'));
if ( is_admin() && $pagenow == 'edit-tags.php' && !empty($_GET['s']) && $taxonomy == 'product_cat' ) {
$term_id = absint( $_GET['s'] );
error_log('Term ID: ' . $term_id);
if ( $term_id > 0 ) {
$query->query_vars['include'] = array( $term_id );
$query->query_vars['search'] = '';
error_log('Query modified for Term ID: ' . $term_id);
}
}
}
add_action( 'pre_get_terms', 'search_by_product_category_id' );
}
if ( ! function_exists( 'add_media_id_column' ) ) {
// Ajouter une nouvelle colonne pour les identifiants des images
function add_media_id_column($columns) {
$columns['media_id'] = __('ID', 'textdomain');
return $columns;
}
add_filter('manage_media_columns', 'add_media_id_column');
}
if ( ! function_exists( 'display_media_id_column_content' ) ) {
// Afficher le contenu de la colonne ID pour les images
function display_media_id_column_content($column, $post_id) {
if ($column === 'media_id') {
echo $post_id;
}
}
add_action('manage_media_custom_column', 'display_media_id_column_content', 10, 2);
}
if ( ! function_exists( 'make_media_id_column_sortable' ) ) {
// Rendre la colonne triable pour les identifiants des images
function make_media_id_column_sortable($columns) {
$columns['media_id'] = 'ID';
return $columns;
}
add_filter('manage_upload_sortable_columns', 'make_media_id_column_sortable');
}
if ( ! function_exists( 'sort_media_by_id_column' ) ) {
// Tri par ID pour les images
function sort_media_by_id_column($vars) {
if (isset($vars['orderby']) && 'ID' === $vars['orderby']) {
$vars = array_merge($vars, array(
'orderby' => 'ID'
));
}
return $vars;
}
add_filter('request', 'sort_media_by_id_column');
}
if ( ! function_exists( 'search_media_by_id' ) ) {
// Recherche par ID pour les médias
function search_media_by_id( $query ) {
global $pagenow;
if ( is_admin() && $pagenow == 'upload.php' && isset( $_GET['s'] ) && !empty($_GET['s']) ) {
$media_id = absint( $_GET['s'] );
if ( $media_id > 0 ) {
$query->query_vars['p'] = $media_id;
$query->query_vars['s'] = '';
}
}
}
add_action( 'pre_get_posts', 'search_media_by_id' );
}
if ( ! function_exists( 'media_id_column_style' ) ) {
// Style pour la colonne ID
function media_id_column_style() {
echo '<style>
.column-media_id { width: 100px; text-align: center; }
</style>';
}
add_action('admin_head', 'media_id_column_style');
}
if ( ! function_exists( 'enable_categories_for_pages' ) ) {
// Activer le support des catégories pour les pages
function enable_categories_for_pages() {
register_taxonomy_for_object_type('category', 'page');
}
add_action('init', 'enable_categories_for_pages');
}custom-admin-columnsÇa fonctionnait très bien (l’affichage, le tri, etc…) jusque…il y a pas longtemps, et puis là, Paf ! C’est cuit.
Sur un sous-domaine, j’ai exactement le même mu-plugin qui fonctionne impeccablement.
J’ai fait le test de base avec toutes les extensions désactivées, ce qui ne change rien, donc… une incompatibilité quelque part avec WordPress directement ? Je ne suis pas assez calé pour trouver. J’ai fait marner Perplexity là-dessus, mais pas de résultat… Si vous avez une idée ? Merci.
-
Cette réponse a été modifiée le il y a 2 mois par
Broussaille. Raison: C'est pas du html, c'est du php !
23 juillet 2024 à 18 h 50 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2476773Cette réponse a été marquée comme privée.19 juillet 2024 à 19 h 48 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2476651Bonjour Joss. Oui, des fois il dit vraiment des c****ries (je m’amuse à lui faire écrire des fiches produits, c’est d’un triste parfois…). Mais bon, pour revenir au code : oui, je l’ai testé et il tourne sur mon site. Donc avec la configuration que j’ai. J’ai pensé que ça pouvait être utile…
Merci pour le lien, j’irais voir ça.
Bonne fin de journée.
17 juillet 2024 à 16 h 16 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2476462Une autre correction, j’ai changé la largeur à 100px, sinon sur un écran pas trop large, ça fout le bazar si l’on ouvre trop de colonnes, c’est donc à ajuster selon vos besoins et possibilités
17 juillet 2024 à 16 h 05 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2476461Une correction : les IDs d’articles et de pages ne sont pas triables par ordre croissant ou décroissant (au début ça mettait le dawa, donc j’ai abandonné, mais ça fonctionne pour les médias, ça doit donc être adaptable…)
Et sinon, ma modification du dessus [ « Bon, attendez un peu, y’a un bug »], c’est une erreur/coïncidence avec un problème du serveur… ah la la, faut pas tout faire en même temps !!!
17 juillet 2024 à 15 h 38 min en réponse à : Mu-plugin pour afficher le poids du produit dans le tableau de bord WooCommerce #2476436Bonjour à toutes et tous. Merci Joss47 pour avoir déplacé le sujet. Je pensais que c’était plutôt du Woocommerce, mais je comprends la logique.
J’en profite pour ajouter un autre mu-plugin qui permet d’ajouter différentes colonnes dans le tableau de bord afin d’avoir des renseignements divers : les identifiants pour les ID d’articles, pour les IDs des pages, des catégories d’articles et des images. Chaque colonne est triable (par ordre de « n° » ascendant ou descendant), large de 250px (le minimum à peu près pour des IDs à 7 ou 8 chiffres), avec le texte (IDs) centré. Elle peut être affichée ou masquée comme n’importe quelle colonne du tableau de bord. Ce mu-plugin donne aussi la possibilité de retrouver un identifiant (c’est pas mal quand on a fait des modifications de style sur un article ou une page, et que l’on ne sait plus sur quel truc…)
Par ailleurs il y a aussi possibilité d’activer le support des catégories pour les pages.
Et aussi une colonne pour les images de produits woocommerce dans le tableau de bord des commandes.
Bon tout ça est créé par ChatGPT, je sais que tout le monde n’est peut-être pas d’accord avec son utilisation. Donc si ça pose problème… les modos savent quoi faire de ce post (mais s’il est supprimé, j’aimerais savoir pourquoi…). Et s’il ne faut plus que j’en poste, ben… idem
<?php
/*
Plugin Name: Custom Admin Columns
Description: Adds custom columns to various admin tables in WordPress and allows searching by ID.
Author: Jean-Pierre Bourdet (chatGPT)
Version: 1.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
// Ajouter une nouvelle colonne pour les IDs des articles
function add_post_id_column($columns) {
$columns['post_id_clmn'] = __('ID', 'textdomain');
return $columns;
}
add_filter('manage_posts_columns', 'add_post_id_column');
// Afficher le contenu de la colonne ID pour les articles
function display_post_id_column_content($column, $post_id) {
if ($column === 'post_id_clmn') {
echo $post_id;
}
}
add_action('manage_posts_custom_column', 'display_post_id_column_content', 10, 2);
// Ajouter une nouvelle colonne pour les IDs des pages
function add_page_id_column($columns) {
$columns['page_id_clmn'] = __('ID', 'textdomain');
return $columns;
}
add_filter('manage_pages_columns', 'add_page_id_column');
// Afficher le contenu de la colonne ID pour les pages
function display_page_id_column_content($column, $post_id) {
if ($column === 'page_id_clmn') {
echo $post_id;
}
}
add_action('manage_pages_custom_column', 'display_page_id_column_content', 10, 2);
// Style pour les colonnes ID
function post_id_column_style() {
echo '<style>
.column-post_id_clmn, .column-page_id_clmn { width: 200px; text-align: center; }
</style>';
}
add_action('admin_head', 'post_id_column_style');
// Recherche par ID pour les articles et les pages
function search_by_post_or_page_id( $query ) {
global $pagenow;
if ( is_admin() && $pagenow == 'edit.php' && isset( $_GET['s'] ) && !empty($_GET['s']) ) {
$post_id = absint( $_GET['s'] );
if ( $post_id > 0 ) {
$query->query_vars['p'] = $post_id;
$query->query_vars['s'] = '';
}
}
}
add_action( 'pre_get_posts', 'search_by_post_or_page_id' );
// Ajoute une nouvelle colonne (dashboard) pour ID des catégories
function add_category_id_column( $columns ) {
$columns['category_id'] = 'ID';
return $columns;
}
add_filter( 'manage_edit-category_columns', 'add_category_id_column' );
// Affiche les identifiants des catégories dans la nouvelle colonne
function show_category_id_column( $content, $column_name, $term_id ) {
if ( $column_name === 'category_id' ) {
$content = $term_id;
}
return $content;
}
add_filter( 'manage_category_custom_column', 'show_category_id_column', 10, 3 );
// Style pour aligner les identifiants au centre
function category_id_column_style() {
echo '<style>
.column-category_id { width: 50px; text-align: center; }
</style>';
}
add_action( 'admin_head', 'category_id_column_style' );
// Recherche par ID
function search_by_category_id( $query ) {
global $pagenow;
$taxonomy = isset($_GET['taxonomy']) ? sanitize_text_field($_GET['taxonomy']) : '';
if ( is_admin() && $pagenow == 'edit-tags.php' && !empty($_GET['s']) && $taxonomy == 'category' ) {
$term_id = absint( $_GET['s'] );
if ( $term_id > 0 ) {
$query->query_vars['include'] = array( $term_id );
$query->query_vars['search'] = '';
}
}
}
add_action( 'pre_get_terms', 'search_by_category_id' );
// Activer le support des catégories pour les pages
function enable_categories_for_pages() {
register_taxonomy_for_object_type('category', 'page');
}
add_action('init', 'enable_categories_for_pages');
// Ajouter une nouvelle colonne personnalisée (image-article) à la liste des commandes WooCommerce
function add_order_thumbnail_column($columns) {
$columns['order_thumbnail'] = __('Miniature', 'woocommerce');
return $columns;
}
add_filter('manage_edit-shop_order_columns', 'add_order_thumbnail_column', 10);
function display_order_thumbnail_column_content($column, $post_id) {
if ($column === 'order_thumbnail') {
$order = wc_get_order($post_id);
if ($order) {
foreach ($order->get_items() as $item) {
$product = $item->get_product();
if ($product && is_object($product)) {
echo $product->get_image(array(50, 50));
}
}
}
}
}
add_action('manage_shop_order_posts_custom_column', 'display_order_thumbnail_column_content', 10, 2);
// Ajouter une nouvelle colonne pour les identifiants des images
function add_media_id_column($columns) {
$columns['media_id'] = __('ID', 'textdomain');
return $columns;
}
add_filter('manage_media_columns', 'add_media_id_column');
// Afficher le contenu de la colonne ID pour les images
function display_media_id_column_content($column, $post_id) {
if ($column === 'media_id') {
echo $post_id;
}
}
add_action('manage_media_custom_column', 'display_media_id_column_content', 10, 2);
// Rendre la colonne triable pour les identifiants des images
function make_media_id_column_sortable($columns) {
$columns['media_id'] = 'ID';
return $columns;
}
add_filter('manage_upload_sortable_columns', 'make_media_id_column_sortable');
// Tri par ID pour les images
function sort_media_by_id_column($vars) {
if (isset($vars['orderby']) && 'ID' === $vars['orderby']) {
$vars = array_merge($vars, array(
'orderby' => 'ID'
));
}
return $vars;
}
add_filter('request', 'sort_media_by_id_column');
// Recherche par ID pour les médias
function search_media_by_id( $query ) {
global $pagenow;
if ( is_admin() && $pagenow == 'upload.php' && isset( $_GET['s'] ) && !empty($_GET['s']) ) {
$media_id = absint( $_GET['s'] );
if ( $media_id > 0 ) {
$query->query_vars['p'] = $media_id;
$query->query_vars['s'] = '';
}
}
}
add_action( 'pre_get_posts', 'search_media_by_id' );
// Style pour la colonne ID
function media_id_column_style() {
echo '<style>
.column-media_id { width: 250px; text-align: center; }
</style>';
}
add_action('admin_head', 'media_id_column_style');Customisation des colonnes du tableau de bord-
Cette réponse a été modifiée le il y a 9 mois et 1 semaine par
Broussaille. Raison: Bon, attendez un peu, y'a un bug
5 février 2024 à 14 h 48 min en réponse à : [Résolu] Mise à jour : demande de connexion FTP ? #2467249Hé bien, c’est Flobogo qui avait raison. J’avais bêtement (?) coché un module dans SecuPress (ils m’ont donné la solution). Donc merci à vous et désolé pour ce dérangement… Bonne journée.
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
Broussaille.
31 janvier 2024 à 11 h 43 min en réponse à : [Résolu] Mise à jour : demande de connexion FTP ? #2466886Bonjour Flobogo, bonjour Li-An.
Bon, pour SecuPress, je vais leur poser la question.
Li-An, pour la désactivation, etc… je tenterais à l’occasion d’une prochaine mise à jour. Par ailleurs l’état de santé du site ne me signale rien…
Quoiqu’il en soit merci à vous deux pour vos réponses. Si je trouve la solution, je viendrais vous en informer.
Bonne journée. (Et meilleurs vœux… 31 janvier, il était temps…).
8 juillet 2023 à 20 h 41 min en réponse à : [Résolu] Remplacer ”ajouter au panier” par un lien personnalisé #2457621Bon, je me réponds à moi-même (la seule façon certaine de ne pas être chafouiné). En fait c’était très c*n, il suffit de ne pas mettre de prix ! (On ne sait jamais, ça peut servir !)
Parfois j’ai l’impression d’être un vrai cré*in !
Désolé pour l’dérangement, et la bonne soirée !
Sniff ! Mince ! Crotte ! Sacrédiou !
Mais comme dit ferman, le beurre, l’argent du beurre… tout ça… faudrait voir à pas soudoyer la laitière, ou le laitier…
Et sinon, tu vas troller où ?
4 juillet 2023 à 20 h 11 min en réponse à : [Résolu] Bug sur les fiches de produits variables #2457332Merci.
3 juillet 2023 à 21 h 04 min en réponse à : [Résolu] Bug sur les fiches de produits variables #2457245Salut Flobogo. C’est bien toute l’ambiguïté du titre. J’ai posté sous celui-ci pensant, à tort après moults tests, que le problème venait d’une ‘friction’…. Ce qui s’est avéré tout à fait faux. À cela s’ajoutait un problème de PHP. Le problème de PHP a été réglé ( un bout de code mal copié). Ce que je souhaiterais c’est un titre faisant uniquement référence au problème des fiches produits variables. C’est un problème rencontré par plusieurs utilisateurs, et qui, lui, est effectivement lié au fichier de traduction de woocommerce. D’où le lien.
Et, effectivement, la ‘mauvaise’ traduction bloque les options d’écran pour les fiches de produits variables. Un truc du genre s% plutôt que %s. Et moi non plus je ne comprends pas le fond du problème. Mais ça marche. Après ‘rechargement’ du fichier le problème est résolu.
Bon, ça paraît un peu ésotérique, mais pas du tout. Promis !
30 juin 2023 à 19 h 28 min en réponse à : [Résolu] Afficher un menu différent sur mobile et PC #2457109Bonsoir. Et bien si cela fonctionne, c’est parfait. Vous voudrez bien noter le topic comme résolu (en haut, à gauche, à côté de statut). Merci.
-
Cette réponse a été modifiée le il y a 2 mois par
-
AuteurMessages