bestsource

Wordpress에서 사용자 정의 관리 페이지에 양식 제출

bestsource 2023. 3. 15. 19:49
반응형

Wordpress에서 사용자 정의 관리 페이지에 양식 제출

워드프레스 admin에 간단한 파일 업로드 필드와 제출 버튼이 있는 커스텀 페이지를 만들었습니다.페이지를 처리할 수 있는 곳에 제출하는 방법을 찾아야 하는데 웹에서 아무것도 찾을 수 없어요.파일을 처리할 수 있는 기능이나 다른 페이지로 이동하기 위해 양식에 '액션'이 무엇이어야 하는지 아는 사람이 있습니까?

다음 코드 스니펫을 사용합니다.

add_action( 'admin_action_wpse10500', 'wpse10500_admin_action' );
function wpse10500_admin_action()
{
    // Do your stuff here
    wp_redirect( $_SERVER['HTTP_REFERER'] );
    exit();
}
add_action( 'admin_menu', 'wpse10500_admin_menu' );
function wpse10500_admin_menu()
{
    add_management_page( 'WPSE 10500 Test page', 'WPSE 10500 Test page', 'administrator', 'wpse10500', 'wpse10500_do_page' );
}
function wpse10500_do_page()
{
?>
    <form method="POST" action="<?php echo admin_url( 'admin.php' ); ?>">
        <input type="hidden" name="action" value="wpse10500" />
        <input type="submit" value="Do it!" />
    </form>
<?php
} 

고마워요, 헌터 씨당신이 옳은 답을 했다는 것을 믿을 수 없었어요.

if($_POST['submit'])로 폼을 감싸고 함수를 호출했습니다.

작동하려면 코드를 다음과 같이 변경해야 했습니다.

add_action( 'admin_post_wpse10500', 'wpse10500_admin_action' );

OP 질문의 특정 부분은 결과를 얻기 위해 승인된 답변과는 다른 방법으로 답변합니다.

폼에 '액션'이 있어야 함수에 갈 수 있는지 아는 사람?

같은 페이지에 투고할 경우, 공백 양식 액션을 통해 동일한 단일 양식에 따라 다른 액션을 취할 수 있습니다.

if ( isset($_POST['custom_action']) ){
    if ( $_POST['custom_action'] == 'update'){
        if ( isset($_POST['Submit']) ) {
            //form validation and gather into a single object $valid;
            //I put this in a class, so self::update_main_config($valid);
            //otherwise you can just update_main_config($valid)
        }
        if ( isset($_POST['Submit_Default']) ) {
            //no form validation needed & defaults handled via custom wp_option, this could also be static function very easily
            //secondary action group such as self::restore_config_defaults();
        }
    }
}

플러그인에 사용하는 커스텀 관리 페이지에 근거해, 예상되는 콘텍스트를 조건부로 설정합니다.admin config 페이지가 새 값을 전송하고 기본값을 복원할 수 있습니다.사용자 입력에 따라 다른 모듈에도 영향을 줄 수 있습니다.여기에서는, 보다 복잡한 송신 콘텍스트를 작성하기 위해서, 꽤 간단한 조건어를 사용하는 방법을 나타냅니다.업로드가 사진이고 관리자가 임의의 사용자 프로파일에 게시하기 위한 제어가 필요한 경우 로그인한 사용자가 자신의 프로필 사진을 게시할 수 있도록 동일한 코드를 재사용해야 합니다.이것이 문맥과 나의 방법론이 관련이 있다고 생각하는 이유입니다.

코드를 재사용하여 단일 콘텍스트를 처리하기 위해 단일 기능 루프를 사용하는 것을 좋아합니다.또한 단일 숨김 양식 입력 또는 사용자 또는 관리자 이벤트에 따라 여러 개의 제어 기능을 사용하여 동일한 형식과 이론적으로1개 이상의 제출 버튼을 사용하여 콘텍스트를 변경할 수 있습니다.실제로 제출자의 마음에 있는 액션을 구분하기 위해 2개의 버튼을 원했기 때문에 그 방법을 보여드렸습니다.

여기 대응하는 HTML이 있습니다.

<form name="config_actions" action="" method="post">
<input type="hidden" id="custom_action" name="custom_action" value="update" />
<input type="submit" id="my_main_action" name="Submit" value="Update" />
<input type="submit" id="my_secondary_action" name="Submit_Default" value="Restore Defaults" />
</form>

간단한 javascript를 사용하여 input #custom_action을 컨텍스트 작성에 적합한 값으로 조건부로 설정합니다.이 예에서는 custom_action이 "update"로 설정되어 있는 것이 검증됩니다.단, 코드에서는 폼 응답에 근거해 다른 콘텍스트를 사용합니다.

이전 예시는 -2(!)를 획득했습니다.$_POST['action']는 이전 코드와 혼동하지 않도록 입력[name="action"]을 사용하고 있습니다.그래서 좋지 않았습니다.여기서는 'custom_action'이라는 이름의 숨겨진 입력 컨텍스트 관리자가 있고 'Submit'과 'Submit_Default'라는 이름의 두 개의 제출 버튼이 있다는 것을 보다 명확하게 보여 줍니다. 이 두 버튼은 둘 다 type=submit이기 때문에 사실상 동일한 형식을 트리거합니다.

언급URL : https://stackoverflow.com/questions/21457332/submitting-a-form-on-a-custom-admin-page-in-wordpress

반응형