如何在wordpress中获取自定义帖子类型ID?

时间:2017-08-05 07:36:00

标签: javascript php wordpress

我已经"视频"自定义帖子类型,它会生成一个短代码,根据其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');




1 个答案:

答案 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>