web-dev-qa-db-ja.com

フック関数にJavaScriptを呼び出すための正しい方法

function node_wp($post_ID) {
    global $post;
    $post_title = get_the_title( $post_ID );
    $post_url = get_permalink( $post_ID );
    $json = array(
        'title_post' => $post_title, 
        'url' => $post_url
    );
    $data = json_encode($json); 
    $server_url = get_option('$node_server_url_op');
    ?>
    <script src="<?php echo $server_url; ?>"></script>
    <script type="text/javascript">
        var socket = io.connect('<?php echo $server_url; ?>');
        socket.on('connect', function(){
            socket.emit('adduser');
            socket.emit('sendchat', '<?php echo $data; ?>');
        });
    </script>
    <?php
}
add_action('publish_post', 'node_wp');

スクリプトを実行すると、次のようになります。

Warning: Cannot modify header information - headers already sent

Javascriptを正しく追加する方法を教えてください。

1
zugrina

Publish_postフックに関数を追加することで、ページが更新されているときに投稿が公開されたときに実行されます。それはヘッダーが既にメッセージを送信しているのは何のためです。

これはある種のチャットがデータベースに保存されるように見えます。これをサイトのフロントエンドで実行する必要がある場合は、wp_footerにフックすることができます。

add_action('wp_footer', 'node_wp' );

あなたのnode_wp関数では、あなたはIDを取得することができます。

global $post; $post_id = $post->ID;

1
Chris_O