每次我发布新帖子时,我都想从我的网站向iOs/android用户发送推送消息。我认为这与执行php代码是一样的。我尝试粘贴一个php脚本,每次启动iOs设备时,它都会向iOs设备发送推送消息,但没有成功。我已经在这段代码之后粘贴了php代码
<div id="content">
<?php
if( have_posts() ):
get_template_part( \'templates/content/content\', str_replace(\'bw_pt_\', \'\', get_post_type() ) );
在单曲中。php文件在word press->外观->编辑器中。我也上传了ck。pem文件位于同一文件夹中。这是我的php代码,当我从终端启动它时,它运行良好。我需要添加一些自定义代码,这将是一个检索数据库,以查看所有设备并为每个设备发送推送通知。稍后我会编写代码,目前我需要知道我是否必须输入此代码,以便在每次管理员按下发布新条目按钮时执行。
这是我的php代码:
<?php
// Put your device token here (without spaces):
$deviceToken = \'993c92d21b053c5115d1xxXXXXxxXXXXXxxxXXXXXxxebe9c21f0f59a0723de8bd38\';
// Put your private key\'s passphrase here:
$passphrase = \'123456\';
// Put your alert message here:
$message = \'Hello world!\';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, \'ssl\', \'local_cert\', \'ck.pem\');
stream_context_set_option($ctx, \'ssl\', \'passphrase\', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
\'ssl://gateway.sandbox.push.apple.com:2195\', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo \'Connected to APNS\' . PHP_EOL;
// Create the payload body
$body[\'aps\'] = array(
\'alert\' => $message,
\'sound\' => \'default\'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack(\'n\', 32) . pack(\'H*\', $deviceToken) . pack(\'n\', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo \'Message not delivered\' . PHP_EOL;
else
echo \'Message successfully delivered\' . PHP_EOL;
// Close the connection to the server
fclose($fp);
?>
最合适的回答,由SO网友:TheDeadMedic 整理而成
将其包装在函数中并将其挂钩到transition_post_status
:
function wpse_18140_transition_post_status( $new, $old, $post ) {
if ( $new === \'publish\' && $new !== $old ) {
// Your code here
}
}
add_action( \'transition_post_status\', \'wpse_18140_transition_post_status\', 10, 3 );
这将在每次发布帖子时运行,但在您只更新帖子内容时不会运行。