programing

WordPress Plugin : 관리 패널의 버튼 클릭 시 호출 함수

batch 2023. 3. 7. 21:11
반응형

WordPress Plugin : 관리 패널의 버튼 클릭 시 호출 함수

관리 패널의 버튼을 클릭하면 PHP 함수를 호출하는 WordPress 플러그인을 만들어야 합니다.기본적인 WordPress 플러그인 작성 및 관리 패널 추가를 위한 튜토리얼을 찾고 있지만 플러그인의 특정 기능에 버튼을 등록하는 방법을 아직 정확히 알지 못합니다.

지금까지의 내용은 다음과 같습니다.

/*
Plugin Name: 
Plugin URI: 
Description: 
Author:
Version: 1.0
Author URI:
*/


add_action('admin_menu', 'wc_plugin_menu');

function wc_plugin_menu(){
 add_management_page('Title', 'MenuTitle', 'manage_options', 'wc-admin-menu', 'wc_plugin_options'); 

}

function wc_plugin_options(){
if (!current_user_can('manage_options'))  {
    wp_die( __('You do not have sufficient permissions to access this page.')    );
}
echo '<div class="wrap">';
echo '<button>Call Function!</button>'; //add some type of hook to call function
echo '</div>';

}

function button_function()
{
//do some stuff
} 


?>

이 페이지의 답변은 유익한 시작을 제공했지만 옵션 (2)를 작동하는 방법을 찾는 데 시간이 걸렸습니다.이러한 점을 고려할 때 다음 코드가 일부 사용자에게 도움이 될 수 있습니다.

다음 코드로 플러그인을 생성하면 관리 영역에 있을 때 왼쪽 메뉴 옵션인 '테스트 버튼'이 추가됩니다.여기를 클릭하면 버튼이 표시됩니다.이 버튼을 클릭하면test_button_action기능.제 예제 기능에서는 페이지에 메시지를 넣기도 하고 로그 파일에 쓰기도 했습니다.

<?php

/*
Plugin Name: Example of Button on Admin Page
Plugin URI: 
Description: 
Author:
Version: 1.0
Author URI:
*/


add_action('admin_menu', 'test_button_menu');

function test_button_menu(){
  add_menu_page('Test Button Page', 'Test Button', 'manage_options', 'test-button-slug', 'test_button_admin_page');

}

function test_button_admin_page() {

  // This function creates the output for the admin page.
  // It also checks the value of the $_POST variable to see whether
  // there has been a form submission. 

  // The check_admin_referer is a WordPress function that does some security
  // checking and is recommended good practice.

  // General check for user permissions.
  if (!current_user_can('manage_options'))  {
    wp_die( __('You do not have sufficient pilchards to access this page.')    );
  }

  // Start building the page

  echo '<div class="wrap">';

  echo '<h2>Test Button Demo</h2>';

  // Check whether the button has been pressed AND also check the nonce
  if (isset($_POST['test_button']) && check_admin_referer('test_button_clicked')) {
    // the button has been pressed AND we've passed the security check
    test_button_action();
  }

  echo '<form action="options-general.php?page=test-button-slug" method="post">';

  // this is a WordPress security feature - see: https://codex.wordpress.org/WordPress_Nonces
  wp_nonce_field('test_button_clicked');
  echo '<input type="hidden" value="true" name="test_button" />';
  submit_button('Call Function');
  echo '</form>';

  echo '</div>';

}

function test_button_action()
{
  echo '<div id="message" class="updated fade"><p>'
    .'The "Call Function" button was clicked.' . '</p></div>';

  $path = WP_TEMP_DIR . '/test-button-log.txt';

  $handle = fopen($path,"w");

  if ($handle == false) {
    echo '<p>Could not write the log file to the temporary directory: ' . $path . '</p>';
  }
  else {
    echo '<p>Log of button click written to: ' . $path . '</p>';

    fwrite ($handle , "Call Function button clicked on: " . date("D j M Y H:i:s", time())); 
    fclose ($handle);
  }
}  
?>

음, 두 가지 방법이 있습니다

1) AJAX를 사용하여 사용자가 버튼을 클릭했을 때 JavaScript에서 실행하는 admin-ajax 훅을 만듭니다.이 어프로치에 대해서는, http://codex.wordpress.org/AJAX 를 참조해 주세요(시큐러티를 위한 난스를 반드시 추가해 주세요(http://codex.wordpress.org/WordPress_Nonces )).admin-module 훅을 작성하기 위한 유용한 리소스입니다.http://codex.wordpress.org/AJAX_in_Plugins

2) 버튼을 폼에 넣고 해당 폼을 플러그인에 POST하고 POST'd 폼을 처리하기 위한 코드를 추가합니다(이 경우 보안을 위한 난스(http://codex.wordpress.org/WordPress_Nonces )를 포함하여 버튼을 클릭하려는 사용자에게 적절한 권한이 있는지 확인합니다).http://codex.wordpress.org/Function_Reference/current_user_can

당신이 하려고 하는 것은 매우 복잡하지는 않지만 폼, PHP, 그리고 (아마도) JavaScript에 대해 잘 이해해야 한다.JavaScript가 정상이라면 사용자가 페이지를 새로고침할 필요가 없기 때문에 옵션 1을 추천합니다.

언급URL : https://stackoverflow.com/questions/8597846/wordpress-plugin-call-function-on-button-click-in-admin-panel

반응형