WordPress的get_post_meta不是针对动态PHP编写的PHP文件内工作?(Wordp

2019-10-18 08:36发布

我想在后Meta选项jQuery的功能,以配合,所以我创建了与PHP标签内jQuery代码的PHP文件。

      <?php
      echo "
           function dynamicAdjust() {
             jQuery('#main-home').css('margin-top', jQuery(window).height());       
           }
       ";
       ?>

也许有更好的方法来创建动态PHP(让我知道如果有)与交元的选择,但这里的jQuery工作得很好,我排队在我的functions.php作为一个JavaScript文件,jQuery的功能可按正常工作。

这个问题并具有PHP文件中的jQuery的整点是让用户打开/关闭,因此例如当我换行代码那里的if语句,像这样的选择。

       <?php
         if(get_post_meta($post->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)的最佳实践我碰到这个来了,这是我所期待的?

Answer 1:

通过PHP值JavaScript文件的标准方法是通过wp_localize_script
另请参见 在WordPress的答案

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 );

见: 什么是JavaScript相当于在PHP中的var_dump或print_r的吗?



文章来源: Wordpress get_post_meta not working inside a .php file that is written for dynamic php?