Jean-Pierre (Créer un compte)

Toutes mes réponses sur les forums

15 sujets de 1 à 15 (sur un total de 325)
  • Auteur
    Messages
  • Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    😂 Désolé Flobogo. Je pensais que ça partais d’une bonne intention…

    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Bonjour, 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…

    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Bonjour à 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 !
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions
    Cette réponse a été marquée comme privée.
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Bonjour 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.

    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Une 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

    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Une 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 !!!

    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Bonjour à 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
    en réponse à : [Résolu] Mise à jour : demande de connexion FTP ? #2467249
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Hé 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.
    en réponse à : [Résolu] Mise à jour : demande de connexion FTP ? #2466886
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Bonjour 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…).

    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Bon, 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 !

    en réponse à : Je ne vous quitte pas, je pars… #2457545
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    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ù ?

    en réponse à : [Résolu] Bug sur les fiches de produits variables #2457332
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Merci.

    en réponse à : [Résolu] Bug sur les fiches de produits variables #2457245
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Salut 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 !

    en réponse à : [Résolu] Afficher un menu différent sur mobile et PC #2457109
    Broussaille
    Participant
    Chevalier WordPress
    358 contributions

    Bonsoir. 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.

15 sujets de 1 à 15 (sur un total de 325)