-
Canonical points to redirect 오류 해결을 위한 플러그인 개발IT/Php 2023. 12. 29. 06:07
Canonical points to redirect을 해결할 수 있는 플러그인 개발 아이디어에서 출발
워드프레스에서 "Canonical points to redirect" 오류를 해결하기 위한 플러그인을 개발하는 것은 가능합니다. 이러한 플러그인은 기본적으로 두 가지 주요 기능을 수행해야 합니다: 1) 웹사이트의 모든 페이지에서 캐노니컬 URL을 검사하고, 2) 캐노니컬 URL이 리디렉션을 가리키는 경우 이를 관리자에게 알리거나 자동으로 수정합니다.
이러한 플러그인은 기본적으로 두 가지 주요 기능을 수행해야 합니다: 1) 웹사이트의 모든 페이지에서 캐노니컬 URL을 검사하고, 2) 캐노니컬 URL이 리디렉션을 가리키는 경우 이를 관리자에게 알리거나 자동으로 수정합니다.
개발 과정의 개요
1. 개발 환경 설정
- 워드프레스 개발 환경을 설정합니다.
- 필요한 경우, 로컬 개발 환경(예: XAMPP, MAMP)을 사용합니다.
2. 플러그인 기본 구조 생성
- 워드프레스 플러그인의 기본 파일과 폴더 구조를 생성합니다.
- plugin-name.php 파일을 만들고 플러그인 헤더 정보를 추가합니다.
3. 캐노니컬 URL 검사 로직 구현
- 워드프레스의 get_permalink() 함수를 사용하여 각 페이지의 캐노니컬 URL을 가져옵니다.
- cURL이나 WordPress HTTP API를 사용하여 해당 URL이 리디렉션을 하는지 확인합니다.
4. 관리자 알림 및 자동 수정 로직
- 리디렉션을 감지하는 경우, 관리자 대시보드에 경고를 표시합니다.
- 선택적으로, 캐노니컬 URL을 자동으로 수정하는 기능을 제공할 수 있습니다.
5. 사용자 인터페이스(UI) 개발
- 플러그인 설정 페이지를 만들어 관리자가 플러그인을 쉽게 관리할 수 있도록 합니다.
- UI를 통해 사용자가 플러그인의 작동 방식을 조정할 수 있도록 합니다.
6. 테스트 및 디버깅
- 다양한 워드프레스 환경에서 플러그인을 테스트합니다.
- 모든 기능이 예상대로 작동하는지 확인합니다.
7. 배포 준비
- 플러그인의 문서화를 완료합니다.
- WordPress.org 플러그인 저장소에 배포하기 위한 준비를 합니다.
주의 사항
- 사용자가 캐노니컬 URL을 임의로 변경하지 못하도록 주의해야 합니다. 이는 SEO와 사이트 구조에 큰 영향을 줄 수 있습니다.
- 플러그인 개발 시 WordPress 코딩 표준을 준수하는 것이 중요합니다.
- 이러한 과정을 거쳐 워드프레스 플러그인을 개발할 수 있으며, 필요에 따라 추가 기능을 구현할 수도 있습니다. 워드프레스 플러그인 개발은 PHP 및 워드프레스 API에 대한 이해가 필요하며, 개발 경험이 있다면 더욱 수월할 것입니다.
1. 플러그인 기본 구조 생성
먼저, 워드프레스 플러그인의 기본 파일과 구조를 생성합니다. 이를 위해 canonical-checker.php 파일을 만듭니다.
canonical-checker.php
<?php /** * Plugin Name: Canonical Checker * Description: Checks if canonical URLs are redirected and alerts the admin. * Version: 1.0 * Author: Your Name */ if (!defined('ABSPATH')) { exit; // Exit if accessed directly. } // 메인 플러그인 클래스 선언 class Canonical_Checker { public function __construct() { add_action('admin_init', array($this, 'check_canonical_urls')); } public function check_canonical_urls() { // 여기에 캐노니컬 URL 검사 로직 구현 } } new Canonical_Checker(); ?>
2. 캐노니컬 URL 검사 로직 구현
이제 각 페이지의 캐노니컬 URL을 검사하는 로직을 구현합니다. 이 예시에서는 WordPress의 HTTP API를 사용합니다.
canonical-checker.php (계속)
public function check_canonical_urls() { // 모든 페이지의 목록을 가져오는 쿼리 $args = array( 'post_type' => 'page', 'posts_per_page' => -1, // 모든 페이지 ); $pages = new WP_Query($args); if ($pages->have_posts()) { while ($pages->have_posts()) { $pages->the_post(); $page_id = get_the_ID(); $canonical_url = get_permalink($page_id); // 캐노니컬 URL 확인 $response = wp_remote_get($canonical_url); if (wp_remote_retrieve_response_code($response) != 200) { // 관리자에게 경고 메시지 add_action('admin_notices', function() use ($page_id) { ?> <div class="notice notice-warning is-dismissible"> <p><?php echo 'Canonical URL redirected for page ID: ' . $page_id; ?></p> </div> <?php }); } } } }
3. 검사 세부 로직 구현
"Canonical points to redirect" 오류를 해결하기 위한 워드프레스 플러그인 개발의 핵심은 캐노니컬 URL 검사 로직의 구현입니다. 이 로직은 웹사이트의 각 페이지에 대해 캐노니컬 URL을 검사하고, 해당 URL이 리디렉션을 하고 있는지 여부를 확인합니다. 이 과정은 크게 다음과 같은 단계로 구성됩니다:
- 모든 페이지의 캐노니컬 URL 가져오기
- 워드프레스의 get_permalink() 함수를 사용하여 각 페이지의 캐노니컬 URL을 가져옵니다.
- 캐노니컬 URL의 상태 확인
- WordPress HTTP API를 사용하여 각 캐노니컬 URL에 HTTP 요청을 보냅니다.
- 응답 상태 코드를 확인하여 URL이 리디렉션을 하는지 판단합니다. 일반적으로 리디렉션은 상태 코드 301 또는 302로 나타납니다.
- 리디렉션 발견 시 경고 메시지 표시
- 리디렉션을 감지하면, 관리자 대시보드에 경고 메시지를 표시하여 관리자가 문제를 인식하고 조치를 취할 수 있도록 합니다.
이 검사 로직은 플러그인의 핵심 기능이며, 워드프레스 사이트의 SEO에 중요한 영향을 미칠 수 있습니다. 물론, 플러그인의 완성도를 높이기 위해서는 사용자 인터페이스, 추가 설정 옵션, 자동 수정 기능 등을 고려할 수 있지만, 기본적으로 캐노니컬 URL 검사 로직의 정확성과 효율성이 가장 중요합니다.
해당 기능들을 추가하고 인터페이스(검사 후 url, 상태가 나오게), 추가 설정 옵션(필요한것 추론), 개별적으로 수정과 자동 일괄 수정을 선택해서 처리할 수 있도록하는 기능 등을 구현할 것입니다.
1. 사용자 인터페이스(UI) 구현
관리자 대시보드에 새로운 메뉴 항목을 추가하여, 검사 결과를 보여주는 페이지를 만듭니다.
각 페이지의 캐노니컬 URL과 상태(정상, 리디렉션 발생)를 표시하는 테이블을 만듭니다.
이 테이블에는 각 페이지에 대한 수정 옵션(수동 수정, 자동 수정 선택)도 포함됩니다.
2. 추가 설정 옵션
검사 주기 설정: 사용자가 검사를 수행할 주기를 설정할 수 있도록 합니다 (예: 매일, 매주, 매월).
리디렉션 유형 선택: 어떤 리디렉션 코드(301, 302 등)를 문제로 간주할지 사용자가 선택할 수 있도록 합니다.
이메일 알림: 리디렉션 문제가 감지되었을 때 이메일로 알림을 받을 수 있는 옵션을 제공합니다.
3. 수동 및 자동 수정 기능
수동 수정: 관리자가 각 페이지의 캐노니컬 URL을 직접 수정할 수 있는 옵션을 제공합니다.
자동 일괄 수정: 리디렉션 문제가 있는 모든 페이지의 캐노니컬 URL을 자동으로 수정하는 기능을 구현합니다. 이 기능은 신중하게 설계되어야 하며, 잘못된 자동 수정이 다른 문제를 일으킬 수 있으므로 주의가 필요합니다.기본 구조
<?php /* Plugin Name: Canonical Checker Description: Checks if canonical URLs are redirected and provides options to fix them. Version: 1.0 Author: Your Name */ if (!defined('ABSPATH')) exit; // Exit if accessed directly. class Canonical_Checker { public function __construct() { add_action('admin_menu', array($this, 'add_admin_menu')); add_action('admin_init', array($this, 'check_canonical_urls')); } public function add_admin_menu() { add_menu_page('Canonical Checker', 'Canonical Checker', 'manage_options', 'canonical-checker', array($this, 'render_admin_page')); } public function render_admin_page() { ?> <div class="wrap"> <h1>Canonical Checker</h1> <!-- 여기에 검사 결과와 옵션을 표시하는 코드 추가 --> </div> <?php } public function check_canonical_urls() { // 캐노니컬 URL 검사 로직 } } new Canonical_Checker();
검사 로직
public function check_canonical_urls() { // 페이지 목록을 가져오는 쿼리 // 캐노니컬 URL 검사 로직 구현 // 결과를 데이터베이스에 저장 }
관리자 페이지 렌더링
public function render_admin_page() { ?> <div class="wrap"> <h1>Canonical Checker</h1> <table class="wp-list-table widefat fixed striped"> <thead> <tr> <th>Page ID</th> <th>Canonical URL</th> <th>Status</th> <th>Actions</th> </tr> </thead> <tbody> <?php // 데이터베이스에서 검사 결과를 가져와 테이블에 표시 ?> </tbody> </table> </div> <?php }
check_canonical_urls 함수 보강
페이지 목록을 가져오고, 캐노니컬 URL을 검사하여 결과를 데이터베이스에 저장하는 로직을 구현하기 위해, 다음과 같은 접근 방법을 사용할 수 있습니다. 이 코드는 Canonical_Checker 클래스 내의 check_canonical_urls 메서드에 포함될 것입니다.
캐노니컬 URL 검사 및 데이터베이스 저장 로직
canonical-checker.php (내부의 check_canonical_urls 메서드)
public function check_canonical_urls() { global $wpdb; // 모든 페이지를 검색 $args = array( 'post_type' => 'page', 'posts_per_page' => -1, // 모든 페이지 ); $pages = new WP_Query($args); if ($pages->have_posts()) { while ($pages->have_posts()) { $pages->the_post(); $page_id = get_the_ID(); $canonical_url = get_permalink($page_id); // 캐노니컬 URL 확인 $response = wp_remote_get($canonical_url, array('redirection' => 0)); $response_code = wp_remote_retrieve_response_code($response); // 리디렉션 검사 if (in_array($response_code, [301, 302])) { $status = 'redirect'; } else { $status = 'ok'; } // 데이터베이스에 결과 저장 $table_name = $wpdb->prefix . 'canonical_checker'; $wpdb->replace($table_name, array( 'page_id' => $page_id, 'canonical_url' => $canonical_url, 'status' => $status, )); } } }
데이터베이스 테이블 생성
데이터베이스에 새로운 테이블을 만들어 결과를 저장하기 위해, 플러그인 활성화 시 테이블을 생성하는 코드를 추가합니다.
canonical-checker.php (플러그인 활성화 시 실행될 부분)
register_activation_hook(__FILE__, 'create_canonical_checker_table'); function create_canonical_checker_table() { global $wpdb; $table_name = $wpdb->prefix . 'canonical_checker'; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( page_id mediumint(9) NOT NULL, canonical_url VARCHAR(255) NOT NULL, status VARCHAR(50) NOT NULL, PRIMARY KEY (page_id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); }
관리자 페이지 검사 결과 표시
데이터베이스에서 캐노니컬 URL 검사 결과를 가져와 관리자 페이지의 테이블에 표시하는 부분을 구현하려면, render_admin_page 메서드 내에 해당 로직을 추가해야 합니다. 아래 코드는 이러한 기능을 구현하는 방법을 보여줍니다.
관리자 페이지에 검사 결과 표시
canonical-checker.php (내부의 render_admin_page 메서드)
public function render_admin_page() { global $wpdb; $table_name = $wpdb->prefix . 'canonical_checker'; // 데이터베이스에서 검사 결과 가져오기 $results = $wpdb->get_results("SELECT * FROM $table_name"); ?> <div class="wrap"> <h1>Canonical Checker</h1> <table class="wp-list-table widefat fixed striped"> <thead> <tr> <th>Page ID</th> <th>Canonical URL</th> <th>Status</th> <th>Actions</th> </tr> </thead> <tbody> <?php foreach ($results as $row) : ?> <tr> <td><?php echo esc_html($row->page_id); ?></td> <td><?php echo esc_url($row->canonical_url); ?></td> <td><?php echo esc_html($row->status); ?></td> <td> <!-- 여기에 수정 및 기타 작업을 위한 버튼 추가 --> <a href="#" class="button action">Edit</a> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> <?php }