获取当前帖子ID作为Java脚本中的变量

时间:2015-12-15 作者:Fid

我试图在一个post Javascript中回显post ID,但没有任何运气。

var post_id = \'123\';  // works fine

var post_id = \'<?php global $post; echo $post->ID; ?>\';  // echos \'ID; ?>\'

var post_id = \'<?php echo $post->ID;?>\';  // echos \'ID; ?>\'
是否有正确的方法回显帖子ID?

7 个回复
SO网友:Pabamato

您可以使用wp\\u localize\\u script函数将变量传递给javascript:https://codex.wordpress.org/Function_Reference/wp_localize_script

将以下内容添加到函数中。php

if(!function_exists(\'load_my_script\')){
    function load_my_script() {
        global $post;
        $deps = array(\'jquery\');
        $version= \'1.0\'; 
        $in_footer = true;
        wp_enqueue_script(\'my-script\', get_stylesheet_directory_uri() . \'/js/my-script.js\', $deps, $version, $in_footer);
        wp_localize_script(\'my-script\', \'my_script_vars\', array(
                \'postID\' => $post->ID
            )
        );
    }
}
add_action(\'wp_enqueue_scripts\', \'load_my_script\');
以及您的js文件(主题名/js/my script.js):

jQuery(document).ready(function($) {
        alert( my_script_vars.postID );
});

注:

如果试图传递整数,则需要调用JavaScript parseInt()函数。

SO网友:Stranger

可在post_ID 已发布和新帖子的隐藏字段。您可以使用这个简单的jQuery代码来获得它。

jQuery("#post_ID").val()

SO网友:SpritsDracula

我用这个-

document.querySelector(\'.status-publish\').getAttribute(\'id\');
这给了你post-xxx 哪里xxx 是邮政编码。然后可以替换post- 使用空字符串。

var id = document.querySelector(\'.status-publish\').getAttribute(\'id\').replace("post-", "");

SO网友:Fid

好的,明白了。也许这会帮助别人。在主题函数中。php:

function pid() {

global $current_screen;
$type = $current_screen->post_type;

    ?>
    <script type="text/javascript">
    var post_id = \'<?php global $post; echo $post->ID; ?>\';
    </script>
    <?php

} 
add_action(\'wp_head\',\'pid\');

SO网友:demopix

到前端postID=jQuery(\'article\')。属性(“id”)。切片(5);

到后端post\\u ID=jQuery(“#post\\u ID”)。val();

SO网友:renWeb

注意。从WP 4.5开始,建议使用WP\\u add\\u inline\\u script(),而不是WP\\u localize\\u script()——后者用于本地化。

请参见:wp_localize_script() > More Info

wp_add_inline_script()

SO网友:Mat Lipe

在启用Gutenberg后的编辑屏幕上,可以使用wp.media 对象

wp.media.view.settings.post.id,
在前端,最好的方法was already outlined 在上面