插件的脚本和风格查询不适用于论文

时间:2012-11-27 作者:Andrea Sciamanna

我在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 ...>\' 标签:我真的不喜欢的东西。

    1 个回复
    最合适的回答,由SO网友:Andrea Sciamanna 整理而成

    嗯,我刚刚意识到我客户的主题是一篇自定义版本的论文,上面有一条令人费解的评论wp_footer(): 我一取消注释,这个问题(显然)就消失了。

    结束