WordPress get_post_meta在为动态php编写的.php文件中不起作用?

我想在post元选项中绑定jquery函数,所以我在PHP标记内部创建了一个带有jQuery代码的PHP文件。

 

也许有更好的方法来创建动态PHP(让我知道,如果有)与post元选项,但这里的jQuery工作正常,我在我的functions.php作为javascript文件入队,并且jQuery函数工作正常。

在PHP文件中使用jQuery的问题和重点是让用户打开/关闭选项,例如当我将代码包装在if语句中时,就像这样。

  ID, '_moon_full_static_area', true) == 'on'); { echo " function dynamicAdjust() { jQuery('#main-home').css('margin-top', jQuery(window).height()); } "; } ?> 

这给了我这个错误致命错误 :在我的目录中调用未定义的函数get_post_meta()..

好吧根据消息明显它没有看到get_post_meta作为一个函数,我知道任何启用了post_meta的东西都连接到数据库,我只是不确定除了排队脚本之外我还需要做什么? 有任何想法吗?

PS .. 在WordPress函数文件中包含JS(使用PHP)的最佳实践我遇到过这个,这是我要找的吗?

将PHP值传递给Javascript文件的标准方法是通过wp_localize_script
另见 WordPress Answers

 add_action( 'wp_head', 'localize_script_so_17497763' ); function localize_script_so_17497763() { // Maybe check for `is_single()` or other Conditional Tag // Check post meta global $post; $get_meta = get_post_meta( $post->ID, '_moon_full_static_area', true ); $meta_value = ( $get_meta == 'on' ) ? 'on' : 'off'; // Build localization array to be passed $localize_array = array( 'moon' => $meta_value, 'post_id' => $post->ID, 'title' => $post->post_title, ); wp_enqueue_script( 'my-file', plugin_dir_path( __FILE__ ).'my-file.js', array('jquery') ); wp_localize_script( 'my-file', 'wplocal', $localize_array ); } 

然后,在my-file.js

 console.log( wplocal.moon ); console.log( wplocal.post_id ); console.log( wplocal.title ); 

请参阅: PHP中的var_dump或print_r等效的JavaScript是什么?