2017-08-05 145 views
0

我有“视频”自定义帖子类型,将根据其ID(不是帖子或页面ID)生成简短代码来显示帖子和页面上的视频。如何在WordPress中获取自定义帖子类型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

找到这个解决方案。有几种方法可以实现这一点。最重要的部分是了解PHP处理后端和JS处理前端。所以JS不能直接与数据库交互来获取id,这就是wp提供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> 
相关问题