WordPress 플러그인을 처음부터 만들 때 염두에 두어야 할 사항

게시 됨: 2022-01-02

WordPress 플러그인은 실제로 WordPress 사이트의 기능을 확장하거나 향상시키는 단일 파일 또는 파일 그룹입니다.

모든 신규 개발자는 "코딩 방법?"을 알고 있지만 WordPress에서 플러그인을 만들 때 개발자는 코드 품질, 보안 및 기능 외에도 WordPress 플러그인을 만들기 위한 몇 가지 기본 요구 사항을 기억해야 합니다.

이 가이드는 WordPress 플러그인을 처음부터 만들 때 염두에 두어야 할 중요한 단계를 설명합니다.

WordPress 플러그인에서 이해해야 할 중요한 것은 WordPress Hooks(예: 작업 및 필터)입니다. 후크를 사용하면 플러그인이 WordPress 기능 내에서 특정 시간에 정의된 기능으로 실행될 수 있습니다.

액션 후크 목록 : https://codex.wordpress.org/Plugin_API/Action_Reference

 정의( 'WP_DEBUG', true );
--- WP_DEBUG 옵션은 워드프레스 버전 2.3.1에 추가되었습니다.
--- 기본적으로 거짓이라고 가정합니다. 그러나 일반적으로 wp-config.php 파일에서 true로 설정됩니다.

–> Plugin 폴더에 새로 생성된 파일에 플러그인 특정 정보 헤더를 추가합니다.

 /*
플러그인 이름: 추천 게시물 유형
플러그인 URI: https://wordpress.org/plugins/testimonial-post-type/
설명: 추천 게시물 유형을 만듭니다. 분류 및 태그입니다.
버전: 1.0
저자: Elsner Technologies Pvt. 주식회사
작성자 URI: https://www.elsner.com
텍스트 도메인: 평가-포스트 유형
도메인 경로: /언어
*/

관련 : Elsner의 최근 출시된 WordPress 플러그인: 게시물 슬라이더 단축 코드

–> 모든 플러그인에는 고유한 함수 이름, 정의 및 클래스 이름이 있어야 합니다.

이렇게 하면 플러그인이 다른 플러그인 또는 테마와 충돌하는 것을 방지할 수 있습니다.

–> 접두사로 __(밑줄 이중), wp_ 또는 _(밑줄 단일)를 사용하지 마십시오.

그것들은 WordPress 자체를 위해 예약되어 있습니다. 클래스 내에서 사용할 수 있지만 독립 실행형 함수로는 사용할 수 없습니다.

–> 직접 파일 액세스로부터 플러그인을 보호하십시오.

 if ( ! defined( 'ABSPATH' ) ) 종료; // 직접 접근하면 종료

— 다음 코드를 모든 php 파일의 맨 위에 배치하여 직접적인 파일 액세스를 방지할 수 있습니다.

–> 무단 액세스를 방지하기 위해 POST 호출에 nonce를 추가하십시오.

nonce (한 번 사용된 숫자)

WordPress nonce는 숫자가 아니라 숫자와 문자로 구성된 해시입니다. 또한 한 번만 사용되는 것이 아니라 제한된 "수명"이 있고 그 후에 만료됩니다.

일반적으로 post_id 174를 삭제하는 URL을 생성합니다.
http://example.com/wp-admin/post.php?post=123&action=trash

이 URL은 완벽하지만 안전하지는 않습니다. 공격자가 게시물의 id를 알고 있다고 가정하면 공격자가 이 URL을 사용하여 사용자 모르게 게시물을 삭제할 수 있습니다.

nonce를 추가하면 이를 방지할 수 있습니다. 예를 들어 nonce를 사용할 때 WordPress가 사용자를 위해 생성하는 URL은 다음과 같습니다.
http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce=b192fc4204

 $nonce = wp_create_nonce( 'my-action_trash' );

— 이것은 단순히 nonce 값 자체를 반환합니다.

— 이 값은 다음과 같은 URL에 넣을 수 있습니다.

action='http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce='.$nonce;

— URL로 전달된 nonce 확인

 wp_verify_nonce( $_REQUEST['_wpnonce'], 'my-action_trash' );

관련 : WordPress 플러그인 디렉토리에 플러그인을 제출하는 방법?

–> POST 호출을 삭제하고 이스케이프하고 유효성을 검사하십시오.

Sanitize : 사용자 입력 청소
업데이트 함수나 prepare() 호출을 통해서라도 데이터베이스 내에 원시 데이터를 삽입해서는 안 됩니다.

작업 호출 또는 URL 리디렉션에 사용할 때 POST 데이터를 삭제하면 XSS 취약성의 가능성이 줄어듭니다.

Sanitize_text_field($_POST['post_name']);
— 위의 기능을 사용하여 데이터를 삭제할 수 있습니다.
— 배후에서 이 함수는 아래에 언급된 작업을 수행합니다.
유효하지 않은 UTF-8 확인
단일 < 문자를 엔터티로 변환
모든 태그 제거
줄 바꿈, 탭 및 추가 공백 제거
스트립 옥텟
— 도우미 함수의 Sanitize_*() 클래스
https://developer.wordpress.org/plugins/security/securing-input/

Validate : 사용자 입력 확인
소독 외에도 모든 통화를 확인해야 합니다. $_POST 호출이 숫자여야 하는 경우 전달하기 전에 int()인지 확인하십시오. 데이터베이스에 데이터를 추가할 때마다 올바른 데이터여야 합니다.

 intval( $_POST['게시물'] );
--- $_POST['게시물']인 경우

숫자 값이 있으면 true를 반환합니다. 그렇지 않은 경우 거짓입니다.

탈출 : 출력 확보
탈출은 이미 가지고 있는 데이터를 가져와서 최종 사용자를 위해 렌더링하기 전에 보안을 유지하는 것입니다.

출력에 대한 이스케이프/캐스팅은 모호성을 제거하고 명확성을 추가합니다.

 <h4> <?php echo esc_html( $title ); ?> </h4>
--- esc_html()

HTML 요소가 우리가 가지고 있는 출력을 가진 데이터 섹션을 묶을 때 사용해야 합니다.

 esc_html(문자열 $text)

HTML 블록에 대한 이스케이프.

 esc_html_e ( 문자열 $text )

HTML 출력에서 ​​안전한 사용을 위해 이스케이프 처리된 번역된 텍스트를 표시합니다.

 esc_html__ ( 문자열 $text )

$text의 번역을 검색하고 HTML 출력에서 ​​안전한 사용을 위해 이스케이프합니다.

 <img alt="" src="<?php 에코 esc_url( $picture_url ); ?>
--- esc_url()

HTML 요소의 'src' 및 'href' 속성에 있는 URL을 포함하여 각 URL에 사용해야 합니다.

 <?php 에코 esc_js( $value ); ?>
--- esc_js()

인라인 자바스크립트용입니다.

 <ul class="<?php echo esc_attr( $stored_class ); ?>">
--- esc_attr()

HTML 요소의 속성에 인쇄되는 다른 모든 항목에서 사용할 수 있습니다.

메모 :-
폴더의 위치와 폴더를 호출하는 가장 좋은 방법을 이해하려면 아래 링크를 확인하십시오.
https://codex.wordpress.org/Determining_Plugin_and_Content_Directories

가능하면 데이터를 wp_options 테이블에 저장하십시오.

이 모든 것의 최종 목표는 유효하지 않고 안전하지 않은 데이터가 처리되거나 표시되지 않도록 하는 것입니다. 모든 것을 청소하고 확인하고 탈출하십시오. 또한 사용자가 항상 정상적인 데이터를 입력한다고 믿지 마십시오.

관련: WordPress 로그인 페이지를 사용자 정의하는 방법