因此,我能够将每篇帖子的内容保存在一个数组中,这要归功于一个非常好的答案:How to localize value of posts
我只是在这里复制了解决方案:
function register_and_enqueue_script()
{
if(\'myPostType\' == get_post_type() && have_posts()) {
wp_register_script( \'js_script\', plugin_dir_url(__FILE__).\'js/script.js\', array(), \'1.8.5\' );
wp_enqueue_script(\'js_script\');
$myCustomValue = array();
while(have_posts()) {
the_post();
$mypostid = get_the_ID();
$myCustomValue[\'\'+$mypostid] = nl2br(get_post_meta($mypostid, \'custom_value\', true));
} // end while
rewind_posts();
wp_localize_script(\'js_script\', \'myCustomValue\', $myCustomValue);
} // end if
但现在我有一个新问题:我如何确保只有我输入的实际帖子的内容在改变?我需要能够将post\\u id传递给我的JS函数。但是怎么做呢?
这是Javascript函数的调用:
function modify_custom_value()
{
return \'<div>
<div>
<input type="input" onkeyup="doFunction();" "/>
</div>
</div>\' ;
}
这是JS中的函数:
function doFunction(){
//alter the content of the post
}
这里我确实调用了somefunction():
function extend_posts( $content )
{
if ( \'myPostType\' == get_post_type() )
{
if( $meta = get_post_meta( get_the_ID(), \'custom_value\', true ) ) {
$content = $content . implement_custom_value(); //this works fine
$content = $content . modify_custom_value(); //this just dont
}
}
return $content;
}
add_filter( \'the_content\', \'extend_posts\' );
有什么想法吗?
很抱歉,我提出了很多问题:/
最合适的回答,由SO网友:Johansson 整理而成
如果您想将post id添加到javaScript中,我会想到两种方法。
输出一个变量,然后使用javascript检索它,假设您需要发布它。您可以创建一个隐藏的div,并为其分配post id的值:
<div id="my-post-id"><?php echo get_the_ID(); ?></div>
现在,您可以使用以下命令在脚本中检索:
var x = document.getElementById("my-post-id").textContent;
您现在有了帖子id,请继续执行进一步的步骤。
使用wp_add_inline_script()
要输出脚本,可以使用以下命令直接将javaScript代码添加到页眉或页脚wp_add_inline_script()
. 看看这个例子:
wp_add_inline_script(\'js_script\',\'alert("\'.get_the_date().\'");\');
现在,您可以直接使用php函数输出内容、在循环中使用等等。但是,您需要先将JS文件排队,然后将内联脚本挂接到它(在本例中,是一个ID为
js-script
正在用于挂钩)。