私は私の子供のためのジャバスクリプトを非アクティブにし、反応することを試みています - 14のテーマから(そうアップデートは物事に影響を与えません)。
私が本当にやりたいことはフッターの4から3に列幅を変更することですが、私はメインテーマで直接/js/functions.jsを変更したくありません(多分これを達成する別の/より良い方法があります。 !)
これをfunctions.phpのchild-themeに入れています。
/* 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();
Deactive jsをしてから、active jsを使いたいのですが、reactivatejsは呼び出されていません。何がおかしいのですか?子テーマの新しいjsファイルへのパスが正しく設定されていて、存在しています。
変更したい/js/functions.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' )
} );
}
} );
なぜexit() in your
reactivatejs() `メソッドを使っているのかわからないのですが、これはスクリプトをロードする前でもメソッドを壊してしまうからです(うまくいけばこれはデバッグのためです)。
私はまたこれでクラスを作成する必要はないと思います、単純なスパゲッティ関数は完全にするでしょう。とにかく、あなたがクラスを使う必要があるなら、そのクラスのコンストラクタは何の仕事も想定しておらず、コンストラクタはそのクラスを初期化することを想定しています。あなたは自分の行動をコンストラクタの外で受けたいと思うでしょう。また、スクリプトやスタイルの削除に関しては、登録を解除してデキューする必要があります。
考えられる解決策は次のとおりです。
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 );
}
}
その後
add_action( 'wp_enqueue_scripts', ['AddJS','addjs'], 100 );
または
$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();