我已经"视频"自定义帖子类型,它会生成一个短代码,根据其ID(不是帖子或页面ID)在帖子和页面上显示视频。
[wpsv_video_shortcode id =" 86"]
根据视频自定义帖子类型ID,我需要从wp_postmeta数据库中获取/获取数据以修改视频宽度& javascript使用" wp_localize_script()"传递来自" plugin.php"的价值到外部javascript。
但是,我无法获取该视频自定义帖子类型的ID(显示在帖子或页面上)。我已阅读了一些参考资料并尝试global $post; $post->ID
,但它无法正常工作。
请帮忙。谢谢
function wpsv_load_scripts() {
global $post;
$wpsv_save_metadata = get_post_meta($post->ID);
$wpsv_video_width = $wpsv_save_metadata['wpsv_video_width'][0];
$wpsv_video_height = $wpsv_save_metadata['wpsv_video_height'][0];
wp_enqueue_script('wpsv_plugin_frontend_js', plugin_dir_url( __FILE__ ) . 'js/wpsv-front-end-script.js');
wp_localize_script('wpsv_plugin_frontend_js', 'wpsv_js_value', array(
'width' => __($wpsv_video_width, 'wpsv'),
'height' => __($wpsv_video_height, 'wpsv'),
)
);
}
add_action('wp_enqueue_scripts', 'wpsv_load_scripts');

答案 0 :(得分:0)
找到解决方案。有几种方法可以实现这一目标。最重要的部分是理解PHP处理后端和JS处理前端。所以JS不能直接与DB交互来获取id,这就是wp provideo wp_localize_script()函数的原因。
第一个解决方案是回显PHP文件的宽度和高度(我目前在js文件上回显)。第二种解决方案是使用隐藏元素将数据传递给js文件:
<input type="hidden" id="myvar" value="'.$wpsv_video_width.'">
或
<p id="myvar" class="'.$wpsv_video_width.'" style="display:none"></p>
或
<p id="myvar" class="'.$wpsv_video_width.'" style="visibility:hidden"></p>