如何在二十四个孩子的主题中以适当的方式改变列数?

时间:2016-06-09 作者:bestprogrammerintheworld

我正在尝试在我的childtheme中停用和反应一个javascript-来自于214主题(所以更新不会影响事情)。

我真正想做的是将页脚中的列宽从4更改为3,但我不想更改/js/functions。js直接出现在主主题中(也许还有另一种/更好的方法来实现这一点。请告诉我!)

我把它放在函数中。子主题中的php:

/* activate and decative js class */
class aadjs {
    public function __construct() {
        add_action( \'wp_enqueue_scripts\', array( $this, \'deactivejs\'), 100 );
    }

    public function deactivejs() {
        wp_dequeue_script( \'twentyfourteen-script\' ); 
        add_action( \'wp_enqueue_scripts\', array( $this, \'reactivatejs\'), 100);
    }

    //Why isn\'t this function executed?
    public function reactivatejs() {
        echo  get_stylesheet_directory_uri() . \'/js/functions.js\'; 
        exit;       
        wp_enqueue_script( \'twentyfourteen-script\', get_stylesheet_directory_uri() . \'/js/functions.js\', array( \'jquery\' ), \'20140616\', true );
    }               

}
$x = new aadjs();
我想先停用js,然后停用js,但不调用reactivatejs。我做错了什么?子主题中新js文件的路径设置正确,并且确实存在。

/js/函数。js我想更改:

_window.load( function() {
        // Arrange footer widgets vertically.
        if ( $.isFunction( $.fn.masonry ) ) {
            $( \'#footer-sidebar\' ).masonry( {
                itemSelector: \'.widget\',
                columnWidth: function( containerWidth ) {
                    return containerWidth / 4;
                },
                gutterWidth: 0,
                isResizable: true,
                isRTL: $( \'body\' ).is( \'.rtl\' )
            } );
        }

    } );
TO (注意3)

_window.load( function() {
        // Arrange footer widgets vertically.
        if ( $.isFunction( $.fn.masonry ) ) {
            $( \'#footer-sidebar\' ).masonry( {
                itemSelector: \'.widget\',
                columnWidth: function( containerWidth ) {
                    return containerWidth / 3;
                },
                gutterWidth: 0,
                isResizable: true,
                isRTL: $( \'body\' ).is( \'.rtl\' )
            } );
        }

    } );

1 个回复
SO网友:Pieter Goosen

我不知道你为什么用exit() in yourreactivatejs()`方法,因为这会在加载脚本之前破坏该方法(希望这是为了调试)。

我也确实认为,没有必要为此创建一个类,一个简单的意大利面函数就可以做到最好。无论如何,如果您需要使用一个类,那么该类的构造函数不应该起任何作用,而是应该初始化该类。您可能希望在构造函数之外执行操作。此外,在删除脚本和样式时,您可能希望取消注册并退出队列。

以下是可能的解决方案:

闭包-不建议使用,因为它们无法移除

add_action( \'wp_enqueue_scripts\', function ()
{
    // Remove your script
    wp_dequeue_script( \'twentyfourteen-script\' );
    wp_deregister_script( \'twentyfourteen-script\' );

    // Add new script
    wp_enqueue_script( \'lets-be-unique-here\', get_stylesheet_directory_uri() . \'/js/functions.js\', [\'jquery\'], \'20140616\', true );
}, 100 );
普通意大利面
add_action( \'wp_enqueue_scripts\', \'addjs\', 100 );
function addjs()
{
    // Remove your script
    wp_dequeue_script( \'twentyfourteen-script\' );
    wp_deregister_script( \'twentyfourteen-script\' );

    // Add new script
    wp_enqueue_script( \'lets-be-unique-here\', get_stylesheet_directory_uri() . \'/js/functions.js\', [\'jquery\'], \'20140616\', true );
}

外部动作类

class AddJS
{
    public function addjs ()
    {
        // Remove your script
        wp_dequeue_script( \'twentyfourteen-script\' );
        wp_deregister_script( \'twentyfourteen-script\' );

        // Add new script
        wp_enqueue_script( \'lets-be-unique-here\', get_stylesheet_directory_uri() . \'/js/functions.js\', [\'jquery\'], \'20140616\', true );
    }
}

THEN

add_action( \'wp_enqueue_scripts\', [\'AddJS\',\'addjs\'], 100 );

OR

$addjs = new AddJS();
add_action( \'wp_enqueue_scripts\', [$addjs,\'addjs\'], 100 );

类中有动作的类

class AddJS
{
    public function addAction ()
    {
        add_action( \'wp_enqueue_scripts\', [$this,\'addjs\'], 100 );
    }

    public function addjs ()
    {
        // Remove your script
        wp_dequeue_script( \'twentyfourteen-script\' );
        wp_deregister_script( \'twentyfourteen-script\' );

        // Add new script
        wp_enqueue_script( \'lets-be-unique-here\', get_stylesheet_directory_uri() . \'/js/functions.js\', [\'jquery\'], \'20140616\', true );
    }
}
$addjs = new AddJS();
$addjs->addjs();