web-dev-qa-db-ja.com

現在の投稿IDをJavascriptの変数として取得します

私は投稿Javascriptで投稿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をエコーする正しい方法はありますか?

1
Fid

Wp_localize_script関数を使用して変数をJavaScriptに渡すことができます。 https://codex.wordpress.org/Function_Reference/wp_localize_script

Functions.phpに以下を追加してください

if(!function_exists( 'load_my_script')){
 function load_my_script(){
グローバル$ 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ファイル(theme-name/js/my-script.js):

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

注意:

整数を渡そうとしているのなら、JavaScriptのparseInt()関数を呼び出す必要があります。

6
Pabamato

これは、公開された投稿と新しい投稿の両方のpost_ID隠しフィールドで利用可能です。この単純なjQueryコードを使ってそれを得ることができます。

jQuery("#post_ID").val()
3
Stranger

はい、わかった。多分これは誰かを助けるでしょう。テーマfunctions.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');
2
Fid