无法在WordPress文本小部件中保存Javascript

时间:2013-07-31 21:17:54

标签: javascript wordpress widget aweber

我正在尝试使用javascript和文本小部件将AWeber注册表单嵌入到我的主要侧边栏中。但是,当我点击保存时,进度轮永远旋转。当我在很长一段时间后刷新页面时,代码就消失了。所以真正的问题是当我的代码粘贴在那里时保存不起作用。使用text和html几乎可以立即保存,所以我假设javascript正在保存所有内容。我以前从来没有遇到过这个问题。它曾经保存没有任何问题。这是我想要保存的代码。

<script type="text/javascript" src="http://forms.aweber.com/form/78/2041064078.js"></script>

我甚至将WordPress从3.4.1升级到最新版本(3.5.2),但我仍然遇到同样的问题。

2 个答案:

答案 0 :(得分:0)

听起来mod_security不允许你发布。您可以在.htaccess中将其关闭(请参阅此处:How can I disable mod_security in .htaccess file?)。

您也可以通过发布略有不同的内容来欺骗它,例如<div></div><script type="text/javascript" src="http://forms.aweber.com/form/78/2041064078.js"></script>

或者,您可以直接将其硬编码到模板中。

答案 1 :(得分:0)

也许最好的方法是创建一个新的小部件。这很容易。基本结构是这样的:

class MyWidget extends WP_Widget{

function MyWidget() {
    // Instantiate the parent object
    parent::__construct( false, 'name', array('description'=>'the description', 'classname'=>'class-name') );
}

function widget( $args, $instance ) {
    extract($args);

    echo $before_widget;
    echo '<h3>title</h3>';

            //do some logic here

    echo $after_widget;
}

function update( $new_instance, $old_instance ) {
    // Save widget options
}

function form( $instance ) {
    // Output admin widget options form
}
}

function my_init_widgets() {
    register_widget('MyWidget');
}

add_action( 'widgets_init', 'my_nit_widgets' );

这就是全部。 也许那时你应该定​​义一些自定义侧边栏,例如:

//init sidebar
add_action( 'widgets_init', 'sidebars_init' );

function sidebars_init(){
register_sidebar(
    array(
        'id' => 'default-sidebar',
        'name' => __( 'Default sidebar' ),
        'description' => __( "Generic sidebar" ),
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget' => '</div>',
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>'
    )
);

如果您定义自己的小部件,则可以添加所需的任何javascript。