Domanda

Ho pubblicato un plug -in sul repository WP che consente alcuni temi per le forme di gravità.

Questo plugin è stato testato con venti dieci e venti undici. Quando ho provato a testarlo in un sito che utilizza la tesi 1.8.5, ho scoperto che qualcosa non funzionava.

Quello che fa questo plug -in è estendere il cortometraggio delle forme di gravità con una nuova azione. Quando viene chiamata questa azione, l'intera forma è avvolta in un div con una classe appropriata, quindi in questo caso il plugin include la funzione di una pelle.php per ulteriori personalizzazioni.

Fondamentalmente il plugin controlla due directory: - /themes Directory all'interno della directory del plugin - /mgft-themes directory all'interno /wp-content

Per entrambe le directory, elenca tutte le sottodirectory e le considerano disponibili themes.

Quando un cortocircuito GF ha un'azione "tema" e un valore "temename", il mio plug -in controlla cosa è disponibile nella cartella del tema selezionato: - Accengo tutto *.js e *.css file situati nella radice del tema - include tutto * .PHP File situati nella radice del tema

Per il momento ho sempre un file functions.php come questo:

wp_enqueue_style("misamee-themed-form-$theme[name]", "$theme[url]css/misamee.themed.form.$theme[name].css");
wp_enqueue_script('tooltipsy', "$theme[url]js/tooltipsy.min.js", array('jquery'));
wp_enqueue_script("misamee-themed-form-$theme[name]-js", "$theme[url]js/misamee.themed.form.$theme[name].js", array('jquery'));

Questa funzione.php è inclusa come tale (è possibile Prendi il codice completo qui):

  1. __costruire()

    add_filter("gform_shortcode_theme", array(&$this, "misamee_themed_form_theme"), 10, 3);
    
  2. Il metodo Misamee_themed_form_theme:

    function misamee_themed_form_theme($string, $attributes, $content)
    {
    extract(shortcode_atts(array(
        'title' => true,
        'description' => true,
        'id' => 0,
        'name' => '',
        'field_values' => "",
        'ajax' => false,
        'tabindex' => 1,
        'action' => 'form',
        'themename' => '',
        'cssclass' => ''
    ), $attributes));
    
    /** @var $themename string */
    /** @var $selectedTheme string */
    $selectedTheme = $themename;
    
    /** @var $id int */
    $theme = $this->misamee_themed_form_setTemplate($selectedTheme, $id);
    
    $additionalClasses = ($theme['name'] != '') ? " class=\"themed_form $theme[name]\"" : "";
    
    //$newString = str_replace('action="prettify"', 'action="form"', $string);
    
    $attributes['action'] = 'form';
    
    $formString = RGForms::parse_shortcode($attributes, $content = null);
    //$formString = do_shortcode($newString);
    
    if ($additionalClasses != '') {
        return "<div$additionalClasses>$formString</div>";
    }
    return $formString;
    }
    
  3. $ this-> Misamee_themed_form_settemplate ():

    private function misamee_themed_form_setTemplate($themeName, $formId)
    {
    $theme = $this->misamee_themed_form_getThemeByName($themeName);
    //echo "<pre>";
    if (strtolower($theme['name']) != "none") {
        if ($theme['name'] == 'default') {
            wp_enqueue_style('misamee-themed-form-css', $theme['url'] . 'css/misamee.themed.form.css');
            wp_enqueue_script('tooltipsy', $theme['url'] . 'js/tooltipsy.source.js', array('jquery'));
            wp_enqueue_script('misamee-themed-form-js', $theme['url'] . 'js/misamee.themed.form.js', array('jquery'));
        } elseif (is_dir($theme['dir'])) {
            //get all files in specified directory
            $files = glob($theme['dir'] . "/*.*");
    
            foreach ($files as $file) {
                $fileData = pathinfo($file);
                switch ($fileData['extension']) {
                    case 'css':
                        wp_enqueue_style($fileData['filename'], $theme['url'] . $fileData['basename']);
                        //echo "wp_enqueue_style('$fileData[filename]', '$theme[url]$fileData[basename]')\n";
                        break;
                    case 'js':
                        wp_enqueue_script($fileData['filename'], $theme['url'] . $fileData['basename']);
                        //echo "wp_enqueue_script('$fileData[filename]', '$theme[url]$fileData[basename]')\n";
                        break;
                    case 'php':
                        include($theme['dir'] . '/' . $fileData['basename']);
                        //echo "include($theme[dir]/$fileData[basename])\n";
                        break;
                }
            }
        }
        add_action("gform_field_css_class", array(&$this, "add_custom_class"), 10, 3);
    }
    return $theme;
    }
    

Funziona, almeno con il tema predefinito, ma con la tesi, questo file PHP non sembra funzionare. Non aumenta alcun errore: semplicemente ID non fa nulla.

Se aggiungo un echo 'OK'; In questo file, posso vedere la stringa "OK" nell'HTML, ma l'eccezione non funziona. Con altri temi il mio codice funziona però, quindi non riesco a vedere come risolvere questo problema.

Ho provato qualsiasi altra opzione, tra cui agganciare le tre righe a "wp_print_footer_scripts", "wp_print_scripts", "wp_enqueue_scripts", "init" (so che dovrei usare wp_print_* o ganci init, ma ma tempi disperati, misure disperate): niente ha aiutato.

In questo momento l'unico modo per "farlo funzionare" sembra sostituire il wp_enqueue_* funzione con rendering diretto del '<script ...>' e '<link ...>' Tag: qualcosa che non mi piacciono davvero.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top