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
'programing' 카테고리의 다른 글
@Service 주석은 어디에 보관해야 합니까?인터페이스 또는 구현? (0) | 2023.03.07 |
---|---|
Jest 및 React 테스트 라이브러리를 사용하여 className을 테스트하는 방법 (0) | 2023.03.07 |
Wordpress: 사용자 지정 유형의 모든 게시물을 가져옵니다. (0) | 2023.03.02 |
Facebook like box 위젯이 데이터 폭 속성을 인식하지 못합니다. (0) | 2023.03.02 |
플러그인 업로더의 업로드 디렉토리를 변경하는 방법 (0) | 2023.03.02 |