我在WP repository上发布了一个插件,允许对重力表单进行一些主题化。
这个插件已经用210和211进行了测试。当我试图在一个使用论文1.8.5的网站上测试它时,我发现有些东西不起作用。
这个插件所做的是用一个新动作扩展重力表单短代码。当调用此操作时,整个表单被包装在一个具有适当类的div中,在这种情况下,插件包含一个skin函数。php进行进一步定制。
插件基本上检查两个目录:-/themes
插件目录中的目录-/mgft-themes
内部目录/wp-content
对于这两个目录,它列出了所有子目录,并认为它们可用themes
.
当GF短代码具有“主题”操作和“主题名”值时,我的插件会检查所选主题文件夹中的可用内容:-它将所有内容排入队列*。js和*。css文件位于主题的根目录中-它包括所有*。位于主题根目录中的php文件
目前我总是有一个函数。php文件如下:
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\'));
此功能。php也包括在内(您可以
grab the full code here):
构造()
add_filter("gform_shortcode_theme", array(&$this, "misamee_themed_form_theme"), 10, 3);
misamee\\u主题形式主题方法:
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;
}
$此->以misamee\\u为主题的\\u form\\u 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;
}
它可以工作,至少在默认主题下是这样,但在论文中,这个php文件似乎不起作用。它不会引发任何错误:简单的id不会做任何事情。
如果我添加echo \'OK\';
在这个文件中,我可以在HTML中看到“OK”字符串,但排队不起作用。但是,对于其他主题,我的代码可以正常工作,所以我不知道如何解决这个问题。
我尝试过任何其他选项,包括将三行挂接到“wp\\u print\\u footer\\u scripts”、“wp\\u print\\u scripts”、“wp\\u enqueue\\u scripts”、“init”(我知道我应该使用wp\\u print\\u*或init hooks,但“绝望的时刻”、“绝望的措施”):没有任何帮助。
目前,“让它工作起来”的唯一方法似乎是取代wp_enqueue_*
函数,直接渲染\'<script ...>\'
和\'<link ...>\'
标签:我真的不喜欢的东西。