programing

WordPress를 통해 액세스할 수 있는 커스텀 기능 필요

powerit 2023. 3. 19. 19:34
반응형

WordPress를 통해 액세스할 수 있는 커스텀 기능 필요

이 알림 기능이 있어 코드의 다른 위치에 호출해야 합니다.플러그인 디렉토리뿐만 아니라 내 아이 테마 내의 파일에서도 액세스할 수 있는 위치에 저장해야 합니다.

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;
}
  • 첫 번째 질문: 어디에 둘 것인가, 현재 기능하고 있다.php?
  • 두 번째 질문은 어떻게 다른 장소에서 부를까요?

어떤 솔루션이나 참고 자료라도 주시면 감사하겠습니다.감사해요.

범위가 넓은 함수가 있기 때문에 다음과 같은 이름 경합을 방지하기 위해 함수에 고유한 이름을 붙이는 것이 좋습니다.naser_send_notitification()뿐만 아니라send_notification또는 가능한 경우 네임스페이스 또는 클래스 사용을 고려하십시오.

자, 이제 당신의 질문에 답하기 위해,functions.php는, 어느 장소에서도 액세스 할 필요가 있는 「광범위」기능에 있어서, 실제로는 안심입니다.Action Reference를 보시면after_setup_theme는 비교적 초기에 실행되므로 해당 후크나 그 이후에 기능에 액세스할 수 있습니다.이때 기능을 사용할 수 있기 때문입니다.하지만, 그것은 다음이다.plugins_loaded그 전에 필요한 경우는, 파일 헤더 또는 「MU 플러그인」이 있는 플러그인으로 할 필요가 있습니다.

초기 단계에서 효과적으로 액세스할 수 있어야 하는 경우, 파일 내의 파일에 저장하는 것을 고려하십시오./wp-content/mu-plugins/이름을 지어줘도 돼custom-functions.php이러한 파일을 Must-Use Plugins라고 합니다.이 디렉토리의 파일은 항상 로드되고 항상 먼저 실행되므로 파일에 선언된 함수는 매우 빨리 액세스할 수 있습니다.이것은 일반적으로 테마에 의존하지 않고 항상 켜져 있고 비활성화할 수 없는 코드를 넣어야 합니다.

효과적인 방법:

1) 기능의 이름을 조금 더 독특한 것으로 변경한다.naser_send_notitification()

2) 이 코드를 입력합니다./wp-content/mu-plugins/custom-funtions.php

3) 전화할 수 있게 되었습니다.naser_send_notification( $tokens, $message )(거의 어느 곳에나 있는) 후크 뒤에 오는 기능 또는 후크에서

다음은 해결책입니다.각 행에 코멘트가 기재되어 있습니다.

function do_something( $a = "", $b = "" ) { // create your function
    echo '<code>';
        print_r( $a ); // `print_r` the array data inside the 1st argument
    echo '</code>';

    echo '<br />'.$b; // echo linebreak and value of 2nd argument
}

add_action( 'danish', 'do_something', 10, 2 ); 
// create your own action with params('action name', 'callback funtion', priority, num_of params)

필요한 곳에 걸어두면

    $a = array(
    'eye patch'  => 'yes',
    'parrot'     => true,
    'wooden leg' => 1
);
$b = __( 'And Hook said: "I ate ice cream with Peter Pan."', 'textdomain' ); 

// Executes the action hook named 'danish'

do_action('danish', $a, $b);

바로 그겁니다.

워드프레스 쇼트코드가 이 문제를 해결할 수 있는 최선의 방법이라고 생각합니다.워드프레스 코어 파일을 조작하는 것은 좋은 방법이 아니며 업그레이드 시 코드 삭제 등 여러 가지 문제로 이어지기 때문입니다.

쇼트 코드에는 몇 가지 이점이 있습니다.특정 문제에 도움이 되는 이유는 다음과 같습니다.

  • 에 넣을 수 .functions.php
  • 에서 할 수 php 및 내의 및 대시보드 에디터 내의 코드 파일

컴플리트 코드: (내부 배치만 가능)functions.php)

function send_notification( $atts )
{

  extract(shortcode_atts(array(
    "tokens" => '',
    "message" => ''
  ), $atts));

  $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;

}

add_shortcode('send-notification', 'send_notification');

테마 또는 플러그인의 어느 곳에서도 사용할 수 있습니다. (이렇게)

  1. 워드프레스 편집기:

    [send-notification token=XXXX message="hello"]
    
  2. 테마/메시지 파일:

    <?php echo do_shortcode('[send-notification token=XXXX message="hello"]'); ?>
    

유용한 자원:

  1. 매개 변수가 있는 WordPress 단축 코드
  2. 워드프레스 쇼트코드에 대한 튜토리얼
  3. 다른 유형의 파라미터를 사용한 쇼트코드 작성

질문에 따르면:
내 . 1 : 러인인내내 inside step step step step step step step step step step step step step step step step step step step 。
그 .2단계: 이 클래스의 오브젝트를 만듭니다.
순서 3: 그 오브젝트로 기능에 액세스 합니다.

// inside your plugin 
class foo {
      public function send_notification() {
            return "whatever you want";
   }
}

// inside your themes functions.php
$foo_object = new foo();

// use the object to access your function:
$foo_object->send_notification();

언급URL : https://stackoverflow.com/questions/51586862/need-a-custom-function-to-be-accessible-throughout-wordpress

반응형