La sceneggiatura del plug -in e la precisione di stile non funzionano alla tesi
-
04-11-2019 - |
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):
__costruire()
add_filter("gform_shortcode_theme", array(&$this, "misamee_themed_form_theme"), 10, 3);
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; }
$ 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