我想将自定义javascript添加到我的wordpress页面。
我尝试了wp_enqueue_script()
,但它不起作用。当我尝试在Inspect元素中直接添加脚本时,它正常工作,所以我的脚本是正确的。
现在我在function.php
文件中创建函数来添加脚本,但它不起作用。当我检查页面源时,它显示脚本/文件被加载到页面中。但它什么都不做。
以下是我的脚本和功能。
Javascript -
jQuery(".tp-tab").mouseenter(function() {
jQuery('.tp-tab').removeClass("selected");
});
jQuery(".tp-tab").click(function() {
jQuery(this).addClass("selected");
});
function.php中的函数
function mytheme_custom_scripts() {
if ( !is_admin() ) {
$scriptsrc = get_stylesheet_directory_uri() . '/wp-content/themes/circles/js/';
wp_register_script( 'myhandle', $scriptsrc . 'slider_hover_effect.js', 'jquery', '1.0', false );
wp_enqueue_script( 'myhandle' );
}
}
add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );
在/wp-content/themes/circles/js/
目录位置,我的脚本附有文件名slider_hover_effect.js
,其中包含以上javascript代码。
请告诉我有没有其他方法可以在我的wordpress网站上添加此脚本。另外,我想仅为主页添加/应用此脚本。这是可能的。
谢谢,
我不确定我应该在get_stylesheet_directory_uri()
或/js/
文件夹之后提供完整路径。
或
我可以使用喜欢 -
function slider_effect() { ?>
<script type="text/javascript">
jQuery(".tp-tab").mouseenter(function() {
jQuery('.tp-tab').removeClass("selected");
});
jQuery(".tp-tab").click(function() {
jQuery(this).addClass("selected");
});
</script>
<?php
}
add_action('wp_head','slider_effect');
答案 0 :(得分:3)
在你的functions.php中
function mytheme_custom_scripts(){
if ( is_home() || is_front_page()) {
$scriptSrc = get_template_directory_uri() . '/js/slider_hover_effect.js';
wp_enqueue_script( 'myhandle', $scriptSrc , array(), '1.0', false );
}
}
add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );
JavaScript文件(slider_hover_effect.js)
$( document ).ready(function($) {
$( 'body' ).on( 'mouseenter', '.tp-tab', function () {
$(this).removeClass("selected");
});
$( 'body' ).on( 'click', '.tp-tab', function () {
$(this).addClass("selected");
});
});
我希望这会有所帮助。
答案 1 :(得分:1)
试试这个:
<强>的functions.php 强>
function mytheme_custom_scripts() {
// No need to check admin, 'wp_enqueue_scripts' only enqueues at the frontend
$scriptsrc = get_stylesheet_directory_uri() . '/js/';
wp_register_script( 'myhandle', $scriptsrc . 'slider_hover_effect.js', array('jquery'), '1.0', false );
wp_enqueue_script( 'myhandle' );
}
add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );
检查完整的代码:https://developer.wordpress.org/reference/functions/wp_enqueue_script
你不应该在'wp_head'中打印JS,除非你不能这样做。
<强> slider_hover_effect.js 强>
jQuery(document).ready(function($){
$(".tp-tab").mouseenter(function() {
$(this).removeClass("selected");
});
$(".tp-tab").click(function() {
$(this).addClass("selected");
});
});
答案 2 :(得分:1)
尝试此操作,使用!is_admin()
is_home()
function mytheme_custom_scripts() {
if ( is_home() ) {
$scriptsrc = get_stylesheet_directory_uri() . '/js/';
wp_enqueue_script( 'myhandle', $scriptsrc . 'slider_hover_effect.js', array(), '1.0', false );
}
}
add_action( 'wp_enqueue_scripts', 'mytheme_custom_scripts' );
或:
function slider_effect() {
if ( is_home() ) {
?>
<script type="text/javascript">
jQuery(function(){
jQuery(".tp-tab").mouseenter(function() {
jQuery('.tp-tab').removeClass("selected");
});
jQuery(".tp-tab").click(function() {
jQuery(this).addClass("selected");
});
});
</script>
<?php }
}
add_action('wp_head','slider_effect');
答案 3 :(得分:0)
我相信你在回调wp_enqueue_script
mytheme_custom_scripts
中的src参数
来自wordpress docs:
wp_enqueue_script ( string $handle, string|bool $src = false, array $deps = array(), string|bool $ver = false, bool $in_footer = false )
参数
$处理 (字符串)(必需)脚本的名称。
$ SRC (string | bool)(可选)WordPress根目录中脚本的路径。示例:'/ js /myscript.js'。 默认值:false
所以我相信你的代码应该是:
wp_enqueue_script( 'myhandle' , $scriptsrc . 'slider_hover_effect.js');
另一种方法是,如果您可以创建自定义插件并激活该插件,以允许您在插件的index.php文件中包含这样的自定义js或css:
add_action( 'init', 'my_script' );
function my_script() {
if( is_home() ){
wp_enqueue_script('my_script', plugins_url('js/script.js', __FILE__), array('jquery'));
wp_enqueue_style('my_style', plugins_url('css/style.css', __FILE__));
}
}
您将文件放在js /或css / dir中,这可以正常工作