이 기사의 첫 번째 부분에서는 내장 기능을 사용하여 WordPress.org와 통신하고 플러그인 세부 정보를 검색하는 방법을 논의했습니다.
이 튜토리얼에서는 이론을 실제로 적용하고 단축 코드를 사용하여 WordPress.org에서 호스팅되는 모든 플러그인의 세부 정보를 WordPress 웹사이트에 표시할 수 있는 간단한 플러그인을 만들겠습니다. p>
시작하기
나는 당신이 플러그인 개발자이고 기본 사항을 알고 있다고 가정하지만, 의심스러운 경우 다음 두 기사를 읽는 것이 좋습니다.
- WordPress 플러그인 개발을 위한 두 가지 접근 방식: 함수형 프로그래밍
- WordPress 플러그인 개발을 위한 두 가지 접근 방식: 객체 지향 프로그래밍
우리 뭐해요?
이 플러그인을 사용하여 "slug"와 "field"라는 두 가지 속성을 허용할 수 있는 단축 코드(예: [mpi slug='my-plugin-information' field='version']
)를 만들고 이를 기반으로 WordPress.org에서 호스팅되는 모든 플러그인의 값을 검색하고 표시하려고 합니다. 저장소 정보.
플러그인 라이브러리 만들기
wp-content/plugins 디렉토리 안에 my-plugin-information이라는 폴더를 만드는 것부터 시작하겠습니다. 그 안에 my-plugin-info.php라는 파일을 만들고 다음 코드를 붙여넣으세요.
으아아아우리는 무엇을 했나요?
위 코드에서는 플러그인 클래스 DOT_MyPluginInfo
。其中包含任何插件的通用块,例如 __construct()
메소드를 생성하고 초기화했습니다.
함수 init_my_plugin_info
与 init
操作挂钩,以便它在加载 WordPress 之后但在发送任何标头之前运行。在函数 init_my_plugin_info
中,我们使用 add_shortcode
이 함수는 단축 코드를 등록합니다.
참고: add_shortcode
에 대해 자세히 알아보려면 Codex를 확인하세요.
위 플러그인에는 이제 플러그인 대시보드에서 WordPress가 인식할 수 있을 만큼 충분한 코드가 있습니다. 지침에 따라 파일을 생성했다면 이제 Plugins 페이지를 방문하여 이 플러그인을 활성화할 수 있습니다.
단축코드 설정
우리는 플러그인에 대해 표시할 정보를 선택할 수 있는 유연성을 원했기 때문에 두 가지 속성을 가진 단축 코드를 만들었습니다. "slug"라는 첫 번째 항목은 검색해야 하는 플러그인의 데이터를 지정하는 데 사용됩니다. 두 번째 속성 "필드"는 표시해야 하는 플러그인의 특정 정보를 지정하는 데 사용됩니다.
예를 들어, 플러그인 다운로드 횟수를 표시하려면 게시물 편집기 아래에 텍스트를 추가하기만 하면 됩니다. 그러면 최종 결과는 "100회 다운로드됨"과 같아야 합니다. p> 으아아아
add_shortcode
我们注册了我们的短代码,以便每当在帖子内容中找到短代码时,都会调用函数 render_mpi()
를 사용하여 단축 코드를 등록하면 게시물 콘텐츠 내에서 단축 코드가 발견될 때마다 이를 처리하기 위해
render_mpi()
단축 코드를 처리하려면
를 사용하세요.
render_api
플러그인 정보를 표시하려면 먼저 단축 코드를 처리하여 속성을 가져와야 합니다.
으아아아
이렇게 하면 "slug"와 "field"(제공된 경우) 두 가지 속성이 추출됩니다. 진행하기 전에 먼저 "slug"와 "field"의 값이 존재하는지 확인하고, 존재하지 않으면 추가 처리를 중지합니다.으아아아
위 코드는 "슬러그"가 존재하는지 확인하고 존재하지 않으면 false를 반환합니다. "슬러그"가 존재하는 경우 "필드" 속성을 계속 확인합니다. 플러그인에 대한 특정 정보를 표시하기 위해 단축 코드를 생성하는 중이므로 추가 처리 전에 이 두 속성이 있는지 확인하면 WordPress.org 플러그인 API에 대한 불필요한 호출을 줄일 수 있습니다.이제 단축 코드에 "slug" 및 "field" 속성 값이 제공되면 이 두 값을 먼저 정리하겠습니다.
으아아아
일시적인 플러그인 데이터 저장이 단축 코드가 포함된 페이지가 로드될 때마다 WordPress.org에 요청을 보내지 않으려면 플러그인 정보를 로컬에 저장해야 합니다. 이렇게 하면 동일한 플러그인에 대해 서로 다른 세부 정보를 표시하는 여러 개의 단축 코드를 배치하는 경우 사이트에 로컬로 저장된 정보의 데이터를 표시하여 프로세스 속도를 높일 수 있습니다.
하지만 플러그인이 업데이트되었는데 오래된 데이터가 계속 표시된다면 어떻게 될까요?
이 문제를 해결하기 위한 가장 빠른 옵션은 Transients API를 사용하여 개인 플러그인 데이터를 저장하고 만료 날짜 데이터를 설정하는 것입니다.또 다른 문제는 다양한 플러그인에 대한 데이터를 검색하는 단축 코드가 있는 경우입니다. 단일 임시 이름을 사용하여 저장하면 예상치 못한 결과가 발생할 수 있습니다. 이 문제를 해결하기 위해 "slug" 속성을 사용하여 저장된 임시 파일에 고유한 이름을 지정합니다. 🎜
为什么要经历这一切?
- 单独保存每个插件的信息
- 减少向 WordPress.org 发出的请求
- 通过直接从您自己的网站提供数据来更快地加载数据
让我们首先创建一个变量 $mpi_transient_name
来保存基于“slug”属性的唯一瞬态名称。
// Create a empty array with variable name different based on plugin slug $mpi_transient_name = 'mpi-' . $slug;
接下来我们检查瞬态是否已经存在:
/** * Check if transient with the plugin data exists */ $mpi_info = get_transient( $mpi_transient_name );
如果瞬态存在,我们将继续根据“field”属性显示数据,否则我们使用 plugins_api
连接到 WordPress.org 并请求插件信息。
if ( empty( $mpi_info ) ) { /** * Connect to WordPress.org using plugins_api * About plugins_api - * https://code.tutsplus.com/tutorials/communicating-with-the-wordpress-org-plugin-api--wp-33069 */ require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); $mpi_info = plugins_api( 'plugin_information', array( 'slug' => $slug ) ); // Check for errors with the data returned from WordPress.org if ( ! $mpi_info or is_wp_error( $mpi_info ) ) { return false; } // Set a transient with the plugin data // Use Options API with auto update cron job in next version. set_transient( $mpi_transient_name, $mpi_info, 1 * HOUR_IN_SECONDS ); }
在上面的代码中,我们做了三件事:
- 我们连接到 WordPress.org 并请求插件信息。然后该请求被保存在名为
$mpi_info
的变量中 - 然后我们进行错误检查,以确保返回的数据是否没有错误
- 最后,我们创建了一个过期日期为一小时的新瞬态
现在,如果 slug 属性的值为“my-plugin-information
”,那么存储插件信息的瞬态名称将为“mpi-my-plugin-information
”。
注意:要了解有关 plugins_api
的更多信息,请参阅本系列的第一篇文章,如本文顶部所示。
显示插件信息
最后一步涉及根据“field”属性的值返回特定信息。为此,我们只需使用单独的检查即可。
if ( $field == "downloaded" ) { return $mpi_info->downloaded; } if ( $field == "name" ) { return $mpi_info->name; } if ( $field == "slug" ) { return $mpi_info->slug; } if ( $field == "version" ) { return $mpi_info->version; } if ( $field == "author" ) { return $mpi_info->author; } if ( $field == "author_profile" ) { return $mpi_info->author_profile; } if ( $field == "last_updated" ) { return $mpi_info->last_updated; } if ( $field == "download_link" ) { return $mpi_info->download_link; }
总结
完整的插件代码:
<?php /* Plugin Name: My Plugin Information Plugin URI: https://code.tutsplus.com Description: Communicate with WordPress.org Plugins API to retrive your Plugin Information Version: 0.1.1 Author: Harish Author Email: me@email.com License: Copyright 2013 Harish This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly if ( ! class_exists( 'DOT_MyPluginInfo' ) ) { class DOT_MyPluginInfo { /** * Constructor */ function __construct() { //Hook up to the init action add_action( 'init', array( &$this, 'init_my_plugin_info' ) ); } /** * Runs when the plugin is initialized */ function init_my_plugin_info() { // Register the shortcode [mpi slug='my-plugin-info' field='version'] add_shortcode( 'mpi', array( &$this, 'render_mpi' ) ); } function render_mpi($atts) { // get our variable from $atts extract(shortcode_atts(array( 'slug' => '', //foo is a default value 'field' => '' ), $atts)); /** * Check if slug exists */ if ( ! $slug ) { return false; } /** * Check if field exists * Return value based on the field attribute */ if ( ! $field ) { return false; } else { // Sanitize attributes $slug = sanitize_title( $slug ); $field = sanitize_title( $field ); // Create a empty array with variable name different based on plugin slug $mpi_transient_name = 'mpi' . $slug; /** * Check if transient with the plugin data exists */ $mpi_info = get_transient( $mpi_transient_name ); if ( empty( $mpi_info ) ) { /** * Connect to WordPress.org using plugins_api * About plugins_api - * https://code.tutsplus.com/tutorials/communicating-with-the-wordpress-org-plugin-api--wp-33069 */ require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); $mpi_info = plugins_api( 'plugin_information', array( 'slug' => $slug ) ); // Check for errors with the data returned from WordPress.org if ( ! $mpi_info or is_wp_error( $mpi_info ) ) { return false; } // Set a transient with the plugin data // Use Options API with auto update cron job in next version. set_transient( $mpi_transient_name, $mpi_info, 1 * HOUR_IN_SECONDS ); } if ( $field == "downloaded" ) { return $mpi_info->downloaded; } if ( $field == "name" ) { return $mpi_info->name; } if ( $field == "slug" ) { return $mpi_info->slug; } if ( $field == "version" ) { return $mpi_info->version; } if ( $field == "author" ) { return $mpi_info->author; } if ( $field == "author_profile" ) { return $mpi_info->author_profile; } if ( $field == "last_updated" ) { return $mpi_info->last_updated; } if ( $field == "download_link" ) { return $mpi_info->download_link; } } // $field check } // render_mpi() } // end class new DOT_MyPluginInfo(); } ?>
此插件代码可在 GitHub 上找到,您也可以从 WordPress.org 下载
付诸行动
现在您只需转到帖子编辑器并添加一个短代码,例如:
Downloaded [mpi slug='my-plugin-information' field='downloaded'] times.
它会显示:
Downloaded 10 times.
显示有关插件的其他信息的示例简码
通过替换“field”属性的值,您可以显示不同的信息,例如:
- 插件名称:
[mpi slug='my-plugin-information' field='name']
- 插件版本:
[mpi slug='my-plugin-information' field='version']
- 插件 Slug:
[mpi slug='my-plugin-information' field='slug']
- 插件作者(返回名称和链接):
[mpi slug='my-plugin-information' field='author']
- 作者简介(返回个人资料地址):
[mpi slug='my-plugin-information' field='author_profile']
- 最后更新:
[mpi slug='my-plugin-information' field='last_updated']
- 下载链接:
[mpi slug='my-plugin-information' field='download_link']
改进
为了简单起见,我使用瞬态来保存插件信息。然而,瞬态从来就不是用来保存重要数据的。另一种方法是使用选项 API、add_options()
或作为 post meta 保存插件数据,然后安排一个 cron 任务每小时更新一次数据。
接下来做什么?
使用 plugins_api
,我们已经演示了通信和检索 WordPress.org 上托管的任何插件的信息是多么容易。
您可能还想查看其他插件,例如 Plugin Info(也使用 plugins_api
和 I Make Plugins,看看它们如何完成相同的任务。
위 내용은 웹사이트에 WordPress.org 플러그인에 대한 정보 표시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

WordPress.com에서 WordPress.org로 블로그를 이동 하시겠습니까? 많은 초보자는 WordPress.com으로 시작하지만 자신의 한계를 신속하게 인식하고 자체-호스팅 된 WordPress.org 플랫폼으로 전환하려고합니다. 이 단계별 가이드에서는 WordPress.com에서 WordPress.org로 블로그를 올바르게 이동하는 방법을 보여줍니다. WordPress.com에서 WordPress.org로 마이그레이션하는 이유는 무엇입니까? WordPress.com을 사용하면 누구나 계정을 만들 수 있습니다

WordPress 웹 사이트 및 소셜 미디어 계정을 자동화하는 방법을 찾고 계십니까? 자동화를 사용하면 Facebook, Twitter, LinkedIn, Instagram 등에서 WordPress 블로그 게시물 또는 업데이트를 자동으로 공유 할 수 있습니다. 이 기사에서는 IFTTT, Zapier 및 Uncanny Automator를 사용하여 WordPress 및 소셜 미디어를 쉽게 자동화하는 방법을 보여 드리겠습니다. WordPress 및 소셜 미디어를 자동화하는 이유는 무엇입니까? WordPre를 자동화하십시오

며칠 전, 사용자 중 한 명이 특이한 문제를보고했습니다. 문제는 그가 사용자 정의 메뉴 항목의 한계에 도달한다는 것입니다. 메뉴 항목 제한에 도달 한 후 저장하는 모든 콘텐츠는 전혀 저장되지 않습니다. 우리는이 문제에 대해 들어 본 적이 없으므로 지역 설치를 시도하기로 결정했습니다. 200 개 이상의 메뉴 항목이 생성되고 저장되었습니다. 효과는 매우 좋습니다. 100 개의 항목을 드롭 다운 목록으로 옮기고 잘 저장하십시오. 그런 다음 서버와 관련이 있다는 것을 알았습니다. 추가 연구 후에, 다른 많은 사람들도 같은 문제를 겪은 것으로 보입니다. 더 깊이 파고 들자, 우리는이 문제를 강조한 Trac 티켓 (#14134)을 발견했습니다. 매우 읽으십시오

WordPress의 사용자 정의 분류 체계에 맞춤형 메타 필드를 추가해야합니까? 사용자 정의 분류법을 사용하면 카테고리 및 태그 외에 컨텐츠를 구성 할 수 있습니다. 때로는 다른 필드를 추가하여 설명하는 것이 유용합니다. 이 기사에서는 그들이 만든 분류법에 다른 메타 엘드를 추가하는 방법을 보여 드리겠습니다. 사용자 정의 메타 필드는 언제 커스텀 분류 체계에 추가해야합니까? WordPress 사이트에서 새 콘텐츠를 만들 때 두 개의 기본 분류법 (카테고리 및 태그)을 사용하여 구성 할 수 있습니다. 일부 웹 사이트는 사용자 정의 분류법 사용의 혜택을받습니다. 이를 통해 다른 방식으로 내용을 정렬 할 수 있습니다. 예를 들어,

Windows Live Writer는 데스크탑에서 WordPress 블로그에 직접 게시물을 게시 할 수있는 다양한 도구입니다. 즉, 블로그를 전혀 업데이트하려면 WordPress 관리자 패널에 로그인 할 필요가 없습니다. 이 튜토리얼에서는 Windows Live Writer를 사용하여 WordPress 블로그에 데스크톱 게시를 활성화하는 방법을 보여 드리겠습니다. WordPress에서 Windows Live Writer를 설정하는 방법 1 단계 : WordPR에서 Windows Live Writer를 사용합니다

최근에 사용자 중 한 명이 매우 이상한 설치 문제를보고했습니다. 게시물을 쓸 때는 글을 쓰는 것을 볼 수 없습니다. 게시물 편집기의 텍스트는 흰색이기 때문입니다. 또한 모든 시각적 편집기 버튼이없고 Visual에서 HTML로 전환 할 수있는 기능도 작동하지 않습니다. 이 기사에서는 WordPress Visual Editor에서 흰색 텍스트 및 누락 된 버튼 문제를 해결하는 방법을 보여줍니다. 초보자주의 사항 : 다른 웹 사이트의 스크린 샷에서 볼 수있는 숨겨진 버튼을 찾고 있다면 주방 싱크대를 찾고있을 수 있습니다. 밑줄, 단어에서 복사 등과 같은 다른 옵션을 보려면 주방 싱크 아이콘을 클릭해야합니다.

WordPress의 사용자 이메일에 아바타를 표시 하시겠습니까? Gravatar는 사용자의 이메일 주소를 온라인 아바타에 연결하는 네트워크 서비스입니다. WordPress는 주석 섹션에 방문자의 프로필 사진을 자동으로 표시하지만 사이트의 다른 영역에 추가 할 수도 있습니다. 이 기사에서는 WordPress의 사용자 이메일에 아바타를 표시하는 방법을 보여 드리겠습니다. Gravatar 란 무엇이며 왜 표시해야합니까? Gravatar는 전 세계적으로 인정 된 아바타를 나타내며 사람들이 이미지를 이메일 주소에 연결할 수 있습니다. 웹 사이트가 지원되는 경우

WordPress에서 기본 미디어 업로드 위치를 변경 하시겠습니까? 미디어 파일을 다른 폴더로 옮기면 웹 사이트 속도와 성능을 향상시키고 백업을 더 빨리 만들 수 있습니다. 또한 자신에게 가장 적합한 방식으로 파일을 정리할 수있는 자유를 제공합니다. 이 기사에서는 WordPress에서 기본 미디어 업로드 위치를 변경하는 방법을 보여줍니다. 기본 매체 업로드 위치를 변경하는 이유는 무엇입니까? 기본적으로 WordPress는 모든 이미지 및 기타 미디어 파일을/wp-content/uploads/폴더에 저장합니다. 이 폴더에서는 여러 해 및 몇 달의 어린이를 찾을 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
