将Meta Box创建中使用的页面ID传递给JavaScript

时间:2016-09-21 作者:Namone

我有一个独特的情况,我在谷歌搜索时找不到。本质上,我是在创建一个插件,并使用以下代码创建了一个元框(这是回调函数):

// Callback function (creates meta box)
function perPageMeta($post) {
    echo \'Last Modified: \' . \'<strong>\' . $post->post_modified . \'</strong>\';
    $storedMetaData = get_post_meta($post->ID);
    ?>
    <form name="meta-box-<?php echo $post->ID; ?>" id="meta-box-field meta-box-<?php echo $post->ID; ?>">
        <input type="text" name="meta-text-businessName" id="meta-text-businessName" placeholder="Business Name"
    value="<?php if(isset ($storedMetaData[\'meta-text-businessName\'])) echo $storedMetaData[\'meta-text-businessName\'][0]; ?>"></input>
    </form>
<?php
wp_nonce_field(basename(__FILE__), \'meta-nonce\'); // Security puproses

}
这很有效。然而,在保存元数据(这是有效的)后,我想在另一个函数中检索数据,然后将其传递给JavaScript,以便将其发布到网站的DOM中。

我的问题是,我似乎无法以任何方式检索帖子的ID。我尝试从perPageMeta()函数传递它,但它只在后端(在Wordpress admin中)运行JS,而不是在实际的站点上运行。

下面是我添加元数据的函数:

 function addMetaData() {
 $value = get_post_meta($post->ID, \'meta-text-businessName\', true);

  if(!empty ($value)) {
    $values = array();
    $values[\'name\'] = $value;
    wp_enqueue_script(\'insert-meta\', plugin_dir_url(__FILE__) . \'/js/insert-metadata.js\', array(jquery));
    wp_localize_script(\'insert-meta\', \'settings\', $values);     

   }
}
目前我已经断开了这两个函数的连接,用于测试目的。。。但我仍在努力寻找解决方案。

So, 如何获得addMetaData函数的正确页面ID?如果手动输入正确的ID,将检索到正确的数据,但它需要是动态的$如果在addMetaData()函数中使用,post->ID显然返回null(尽管它在perPageMeta函数中工作正常)

这两个函数在同一脚本中。

1 个回复
最合适的回答,由SO网友:Namone 整理而成

所以,我犯了一个愚蠢的错误。

我需要从一个可以访问所需变量(比如post ID)的地方调用我的函数。使用以下挂钩效果良好:

add_action(\'the_post\', \'add\');