1

Je travaille sur la refonte d'un site Web de clients en utilisant wordpress. Leur développeur précédent qui a écrit le site à partir de zéro, a fait un produit sku/product id avec un signe hash/pound '#' devant le numéro d'identification du produit/sku dans le texte éditant le produit dans la section admin créerait un lien au produit existant. Je me demandais quelle langue et à quoi ressemblerait le code pour pouvoir faire essentiellement la même chose. J'ai déjà créé dans WooCommerce un lien vers tous les produits en utilisant le SKU/Product ID.Wordpress # pour créer le lien du produit

Ex: # 7512D créerait un lien comme suit;

<a href="bioquip.com/search/dispproduct.asp?pid=7512D">7512D</a> 
+1

Il y a beaucoup de questions ici: pourquoi vous demandez-vous quelle langue utiliser? Vous êtes déjà installé sur WordPress, par les sons de celui-ci, qui utilise PHP, comme je suis sûr que vous êtes au courant. Le code snipé vous partagez, bien que possède une extension 'asp' dans l'URL. Je ne sais pas quoi en faire! –

+0

Le site web est un très vieux site web que nous sommes en train de mettre à jour. Nous avons décidé d'aller avec Wordpress pour faciliter la personnalisation et la fonctionnalité. – bworkman

+0

Vous l'avez - et vous cherchez à dupliquer les anciennes fonctionnalités dans wordpress? –

Répondre

2

Cela devrait être fait en tant que plug-in pour le garder thème indépendant et il faut simplement de filtrer le « contenu » du poste (ou page). Voici un exemple de travail utilisant WooCommerce. Il utilise le même design que vous avez mentionné dans votre message (#XXXXXX), mais je vous recommande de trouver autre chose que le "#" à utiliser comme début du match. Cela correspond à tous les caractères codés en HTML au format &#8217;. Bien que la recherche de SKU s'assure que vous n'aurez pas de correspondance errante, cela signifie qu'il y aura beaucoup plus de requêtes qu'il n'en faut.

<?php 

/* 
Plugin Name: Replace SKU with Link 
Description: Plugin to replace a formatted SKU (#XXXXXX) with the link to that product 
Version: 1.0 
*/ 

defined('ABSPATH') or die('No direct access!'); 

class SkuReplace { 

    /* 
    * On __construct, we will initialize the filter for the content 
    */ 
    function __construct() 
    { 
     add_filter('the_content', array($this, 'replace_sku_with_link')); 
    } 

    /** 
    * The filter hook get processed here 
    * 
    * @return string the filtered content 
    */ 
    function replace_sku_with_link($content) 
    { 

     // Check if we're inside the main loop in a single post page. 
     if ((is_single() || is_page()) && in_the_loop() && is_main_query()) 
     { 
      // Use the callback to check to see if this product exists in the DB 
      $content = preg_replace_callback(
       '/\#[^\s\<]*/', 
       array($this, 'get_product_url'), 
       $content 
      ); 
     } 

     return $content; 
    } 

    /** 
    * The match is checked against the product entries to verify that it exists 
    * If it does, it will create the hyperlink and return it, else, it returns 
    * the original string so as not to break the content 
    * 
    * @return string URL or original string 
    */ 
    function get_product_url($in) 
    { 
     global $wpdb; 

     $sku = ltrim(rtrim($in[0], " \t\r\n"), '#'); 

     $product_id = $wpdb->get_var(
      $wpdb->prepare(
       "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", 
       $sku 
      ) 
     ); 

     if($product_id) 
     { 
      $product = new WC_Product($product_id); 

      $url = get_permalink($product_id) ; 

      return '<a href="'. $url .'">'. $product->get_name() .'</a>'; 
     } 

     return $in[0]; 
    } 

} // end class 

$plugin_name = new SkuReplace(); 
+0

Merci pour les commentaires! J'ai trouvé que c'est cassé les pages du produit unique. Un autre symbole comme '@' serait-il meilleur que '#'? Si oui, est-ce que je remplacerais le '#' où qu'il apparaisse dans le php ci-dessus? – bworkman

+0

Si c'est briser les pages, alors il est probablement en conflit avec un autre plugin. Vous pouvez essayer d'éteindre les autres plugins jusqu'à ce que vous le voyiez fonctionner pour voir quel est le conflit. Vous devrez peut-être ajuster le timing de l'appel 'add_filter()'. –

+0

J'ai désactivé tous les plugins et s'il y a un # dans le texte de description pour créer le lien, toute la description ne se chargera pas et la bannière admin wp est vide. – bworkman