需要一个可以在WordPress中访问的自定义功能

Nas*_*zad 7 wordpress notifications function call

我有这个通知功能,需要在代码的不同位置调用它.我需要把它放在我的子主题内以及plugins目录中的任何文件所访问的位置.

function send_notification($tokens, $message)
{
    $url = 'https://fcm.googleapis.com/fcm/send';
    $fields = array(
         'registration_ids' => $tokens,
         'data' => $message
        );
    $headers = array(
        'Authorization:key = My_Token',
        'Content-Type: application/json'
        );

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);  
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
   $result = curl_exec($ch);           
   if ($result === FALSE) {
       die('Curl failed: ' . curl_error($ch));
   }
   curl_close($ch);

   return $result;
}
Run Code Online (Sandbox Code Playgroud)
  • 第一个问题,在哪里放,目前它在functions.php?
  • 第二个问题,如何在不同的地方称呼它?

任何解决方案和参考将不胜感激.谢谢.

Xhy*_*ynk 4

由于您拥有一个具有广泛范围的函数,请考虑给它一个更唯一的名称以防止命名冲突,例如naser_send_notitification()而不只是send_notification,或者如果可以的话 - 考虑使用命名空间

现在回答您的问题,functions.php实际上通常是需要在任何地方都可以访问的“广泛范围”功能的安全选择。如果您查看操作参考,您会发现它after_setup_theme是相对较早触发的,允许您的函数可以从该钩子或稍后访问 - 因为它在此时可用。但是,它确实出现在 之后plugins_loaded,因此如果您在此之前需要它,则需要将其转换为带有文件头或“MU 插件”的插件。

如果您需要尽早有效地访问它,请考虑将其放入文件中/wp-content/mu-plugins/并为其命名,甚至可以是custom-functions.php. 这些文件称为必须使用的插件。此目录中的文件始终会加载,并且始终先于其他任何内容运行,因此可以非常早地访问其中声明的函数。这通常是我放置需要确保与主题无关、始终打开且无法停用的代码的位置。

如此有效:

1)将您的函数重命名为更独特的名称,例如naser_send_notitification()

2)将此代码放入/wp-content/mu-plugins/custom-funtions.php

3)现在你应该能够调用钩子naser_send_notification( $tokens, $message )之后的任何函数或钩子muplugins_loaded(几乎在任何地方)