Intereting Posts
ACF sdd настраиваемые поля для категорий и отображения URL-адрес wp-admin не позволяет войти и перенаправить на ту же страницу Правила перезаписи перенаправляют и не передают VAR Создайте страницу меню администратора, на которой отобразится контент из функции в functions.php Передать параметр на подключенную функцию с помощью настраиваемого шаблона страницы Как отображать сообщения по подсчету голосов, и если значение не будет продолжаться с последними сообщениями без голосов? показывать сообщения в подкатегории только в том случае, если в этой подкатегории Как создать короткий код из функции php Расширить страницу настроек плагина Почему API-интерфейс настроек не сохраняет мой массив параметров Поля пользовательских тем в меню настроек – применяются фильтры к одному из этих полей? Почему «date_query» не работает в «pre_get_posts»? Как предотвратить изменение текста с использованием фильтра gettext (предположительно) функцией updateText () js на экране редактирования CPT Разрешить дублирование ссылок для ссылок в разных категориях mysql query – как избежать апострофа?

Уведомление Apple push не работает

Я написал плагин, который запускает уведомление Apple push на устройства IOS.

Когда я запускаю его вручную через корневой каталог, он отлично работает. Ловушка, когда я перемещаю его в папку плагина и запускаю его как плагин, используя:

add_action( 'publish_post', 'post_published' ,10,2); 

он возвращает ssl-ошибку с серверов apple.

В коде ничего не изменилось (кроме include ('wp-config.php')), который не нужен в качестве плагина.

Это ошибка:

Предупреждение: stream_socket_client () [function.stream-socket-client]: операция SSL завершилась неудачно с кодом 1. OpenSSL Сообщения об ошибках: ошибка: 14094410: процедуры SSL: SSL3_READ_BYTES: сбой вызова подтверждения sslv3 в / nas / wp / www / staging / geektimecoil /wp-content/plugins/wp-mes-push-to-apple/wp-mes-push-to-apple.php в строке 131

Предупреждение: stream_socket_client () [function.stream-socket-client]: не удалось включить криптографию в / nas / wp / www / staging / geektimecoil / wp-content / plugins / wp-mes-push-to-apple / wp-mes -push-to-apple.php в строке 131

Предупреждение: stream_socket_client () [function.stream-socket-client]: невозможно подключиться к ssl: //gateway.sandbox.push.apple.com: 2195 (Неизвестная ошибка) в / nas / wp / www / staging / geektimecoil / wp-content / plugins / wp-mes-push-to-apple / wp-mes-push-to-apple.php в строке 131 Ошибка: 0

Это код, как и в плагине:

 function post_published($ID, $post ) { // $url = "http://geektimecoil.staging.wpengine.com/googlePush.php"; global $wpdb; // $post = get_post(211051); $categories = get_the_category($post->ID ); if($categories){ $cond = array(); $cats = array(); foreach($categories as $category) { $cats[] = $category->slug; switch ($category->slug) { case "startup": $cond[] = "startup"; break; case "development": $cond[] = "dev"; break; case "gadgets": $cond[] = "mobile"; break; case "internet": $cond[] = "internet"; break; case "hi-tech": $cond[] = "hightech"; break; case "%d7%a1%d7%a7%d7%99%d7%a8%d7%95%d7%aa": // hebrew skirot $cond[] = "reviews"; break; case "science": $cond[] = "science"; break; } } print_r($cond); $condition = "( (".$cond[0]."=1)"; for ($i=1; $i<=(count($cond)-1) ; $i++) { $condition .= "or(".$cond[$i]."=1)"; } $condition .= " )"; } $sql="SELECT token FROM wp_mobile where device=1 AND ".$condition; $users = $wpdb->get_results($sql); print_r($sql); print_r($users); $passphrase = '***'; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); stream_context_set_option($ctx, 'ssl', 'local_cert','/push/geek_dev.pem'); // stream_context_set_option($ctx, 'ssl', 'local_cert','/push/geek_prod.pem'); stream_context_set_option($ctx, 'ssl', 'cafile', '/push/ios_entrust.pem'); # Open a connection to the APNS server $fp = stream_socket_client(//'ssl://gateway.push.apple.com:2195', $err, 'ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp){ echo "Error: ".$err; exit; } $post_url = str_replace('www','m',get_permalink( $post->ID)); $body["aps"] = array( "alert" => "message", //title "sound" => "default", "badge" => "0", "url" => $post_url, ); $payload = json_encode($body); $msg = chr(1) // command (1 byte) . pack('N', 'notification') // identifier (4 bytes) . pack('N', time() + 86400) // expire after 1 day (4 bytes) . pack('n', 32) // token length (2 bytes) . pack('H*', 'db8***b414004ccb9a***2a54d9de06') . pack('n', strlen($payload)) // payload length (2 bytes) . $payload; // the JSON payload // Send it to the server $result = fwrite($fp, $msg, strlen($msg)); //echo "\n$result"; //set blocking stream_set_blocking($fp,0); //Wait to response sleep(1); fclose($fp); return $print; } add_action( 'publish_post', 'post_published' ,10,2); ?> 

Как я уже упоминал ранее, без add_action и не как плагин этот точный код работает.

Solutions Collecting From Web of "Уведомление Apple push не работает"

OMG, наконец, по мере того, как код запускается из плагина, текущий рабочий каталог установлен на wp-admin, тогда как когда я запускаю его вручную, он устанавливает для / wp-content / plugins …

Итак, когда вызывается функция push, просто добавьте следующую строку кода:

 chdir(ABSPATH . 'wp-content/plugins/*your plugins folder name*/');