在jQuery脚本中使用php代码-wp_localize_script()不起作用
我想在wordpress循环中的元素上使用引导弹出。我有一个javascript函数,理想情况下应该提取文章的标题,将其存储在变量中并返回变量。。。但是,php块存储为sting。我在这里和其他地方看到过许多线程,解决方案是将php块放在在jQuery脚本中使用php代码-wp_localize_script()不起作用,jquery,wordpress,twitter-bootstrap,Jquery,Wordpress,Twitter Bootstrap,我想在wordpress循环中的元素上使用引导弹出。我有一个javascript函数,理想情况下应该提取文章的标题,将其存储在变量中并返回变量。。。但是,php块存储为sting。我在这里和其他地方看到过许多线程,解决方案是将php块放在中,但这在这里根本不起作用 弹出窗口显示: 我的脚本执行得太早了吗 用wp_enque_script()指定的.js文件中的我的代码: scripts.js jQuery(document).ready(function($){ share = funct
中,但这在这里根本不起作用
弹出窗口显示:
我的脚本执行得太早了吗
用wp_enque_script()指定的.js文件中的我的代码:
scripts.js
jQuery(document).ready(function($){
share = function() {
var title = script_vars.title;
return title;
}
$('.share').popover({
content: share(),
placement: 'bottom'
});
});
另外,
title()
和permalink()
你可以这样做
在php文件中:
window.postTitle = "<?php echo the_title(); ?>";
.js文件不由php引擎处理,因此不会解释php标记
你可以这样做
在php文件中:
window.postTitle = "<?php echo the_title(); ?>";
您不能这样做,因为Javascript不是由PHP处理的。它只是像文本文件一样发送到浏览器
不过,您可以做的是将标题传递给脚本。此函数最初是为国际化/本地化而编写的,但它广泛用于在PHP和Javascript之间传递值的插件和主题中。您不能这样做,因为PHP不处理Javascript。它只是像文本文件一样发送到浏览器
不过,您可以做的是将标题传递给脚本。此函数最初是为国际化/本地化而编写的,但它广泛用于在PHP和Javascript之间传递值的插件和主题中。您的代码存在一些问题,这似乎是WordPress开发人员常见的小错误。让我们来整理一下
本地化脚本是正确的方法
您需要知道循环之外有哪些值可用,以及不在循环中时如何获取标题和永久链接
在如何将脚本排队方面存在一些小问题
我们将使用几个特定的函数
获取标题($ID)
将需要循环外部的post ID,并返回它以在PHP中使用,而不是将其回显出来
get_peramlink($ID)
它也在循环之外工作,并返回永久链接以在PHP中使用李>
- 我们将调整传递给排队脚本的参数,特别是
array()
应该是array('jquery')
,以显示它对jquery的依赖性,您正在脚本中使用jquery,我们也将jquery排队,并使用wp\u register\u脚本
在functions.php文件中
function do_scripts()
{
/* Get the ID of the current post */
global $post;
$ID = $post->ID;
/* register the script */
wp_register_script( 'custom', get_template_directory_uri() . '/js/scripts.js', array('jquery'), false, true );
$script_vars = array(
'title' => get_the_title( $ID ),
'url' => get_permalink( $ID )
);
/* actually enqueue jquery (that ships with WP) and your custom script */
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'custom' );
/* Localize the vairables */
wp_localize_script('custom', 'script_vars', $script_vars);
}
/* If we're not in the admin section call our function on the wp_enqueue_scripts hook */
if ( !is_admin() ) add_action( "wp_enqueue_scripts", "do_scripts", 10 );
这将通过创建一个全局javascript对象并在包含脚本之前输出它来实现
在scripts.js文件中,您可以访问此对象
script_vars.title // will return the title
script_vars.url // will return the permalink
您的代码有一些问题,这似乎是WordPress开发人员的常见小错误。让我们来整理一下
本地化脚本是正确的方法
您需要知道循环之外有哪些值可用,以及不在循环中时如何获取标题和永久链接
在如何将脚本排队方面存在一些小问题
我们将使用几个特定的函数
获取标题($ID)
将需要循环外部的post ID,并返回它以在PHP中使用,而不是将其回显出来
get_peramlink($ID)
它也在循环之外工作,并返回永久链接以在PHP中使用李>
- 我们将调整传递给排队脚本的参数,特别是
array()
应该是array('jquery')
,以显示它对jquery的依赖性,您正在脚本中使用jquery,我们也将jquery排队,并使用wp\u register\u脚本
在functions.php文件中
function do_scripts()
{
/* Get the ID of the current post */
global $post;
$ID = $post->ID;
/* register the script */
wp_register_script( 'custom', get_template_directory_uri() . '/js/scripts.js', array('jquery'), false, true );
$script_vars = array(
'title' => get_the_title( $ID ),
'url' => get_permalink( $ID )
);
/* actually enqueue jquery (that ships with WP) and your custom script */
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'custom' );
/* Localize the vairables */
wp_localize_script('custom', 'script_vars', $script_vars);
}
/* If we're not in the admin section call our function on the wp_enqueue_scripts hook */
if ( !is_admin() ) add_action( "wp_enqueue_scripts", "do_scripts", 10 );
这将通过创建一个全局javascript对象并在包含脚本之前输出它来实现
在scripts.js文件中,您可以访问此对象
script_vars.title // will return the title
script_vars.url // will return the permalink
此代码是在.php文件还是.js文件中?此脚本位于何处?代码位于.js文件中,该文件由wp\u enque\u script()组成
您可以在PHP文件中内联使用此jQuery代码,而不是将此jQuery代码放在单独的.js文件中,它会工作。此代码是在.PHP文件中还是在.js文件中?此脚本位于何处?代码位于.js文件中,该文件与wp_enque_script()
您可以在PHP文件中内联使用此jQuery代码,而不是将此jQuery代码放在一个单独的.js文件中,它会起作用。实际上,这不起作用,请参见编辑后的问题。谢谢@BojanaŠekeljić交换2个脚本引用回合;)@Archer不确定我是否理解?忽略最后一条注释-您正在文档中运行代码。ready
处理程序,因此它不相关。查找由wp\u localize\u script
创建的脚本,并确保存在正确的值。不能在外部使用\u title()。请改用。实际上这不起作用,请参阅编辑后的问题。谢谢@BojanaŠekeljić交换2个脚本引用回合;)@Archer不确定我是否理解?忽略最后一条注释-您正在文档中运行代码。ready
处理程序,因此它不相关。查找由wp\u localize\u script
创建的脚本,并确保存在正确的值。不能在外部使用\u title()。改用。