내가 언급했듯이 나는이 필요성에 대해 즉시 작업을 시작할 것이기 때문에 앞으로 나아갈 것입니다. 내가 이것을 쓰러 뜨리고 있다고 생각하면 게시를 시작하는 것이 가장 좋습니다. 그래도 다른 사람이 내가하지 않은 부분을 게시하거나 게시 할 수있는 경우에는 내가하지 않은 내용을 복사하여 답변을 최선의 답변으로 선택하게되어 기쁩니다. 그때까지 코드 게시를 시작하겠습니다.
첫번째 것 : 포함 wp-load.php
:
우리는 단지 사이트 "부트 스트랩"에 사용되는 실행 초기에 웹 사이트의 루트에서 독립 실행 파일을 만드는 때문에 (난 내 전화 /my-init.php
) 우리는 포함하여 시작 /wp-load.php
워드 프레스 API 함수를로드 :
<?php
include "wp-load.php";
사이트 사용자 생성
우리는 사용자를 만들기 위해있는 wp_insert_user()
함수를 사용할 것 /wp-includes/registration.php
입니다. 이 파일은 기본적으로로드되지 않으므로을 호출하여 직접로드해야합니다 require_once()
.
또한이 get_user_by()
함수를 사용하여 먼저 사용자가 이미 생성되었는지 확인합니다. 그렇지 않은 경우 코드를 두 번 실행할 필요가 없습니다. 참고 : 이 패턴은 다음과 같습니다. 예를 들어, 스크립트는 여러 번 호출되는 경우, 특히 사용자가 초기화하려는 항목에 대한 데이터를 추가하거나 변경 한 후 어떤 것도 복제하거나 덮어 쓰지 않아야합니다.
require_once( ABSPATH . WPINC . '/registration.php');
$user = get_user_by('slug','johnsmith');
if (!is_object($user)) {
wp_insert_user(array(
'user_login' => 'johnsmith',
'role' => 'administrator',
'user_email' => 'johnsmith@example.com',
'user_url' => 'http://example.com',
'first_name' => 'John',
'last_name' => 'Smith',
'comment_shortcuts' => '',
'use_ssl' => '0',
'user_pass' => '12345',
));
}
"Hello Dolly" 플러그인 삭제
"Hello Dolly" 플러그인 을 삭제하려면 ( 죄송합니다. Matt ) 이 delete_plugins()
기능을 사용합니다 . 디렉토리에 delete_plugins()
상대적인 파일 경로 배열을 예상합니다 /wp-content/includes/
. 를 들어 헬로 돌리 파일 경로 플러그인 단순히 hello.php
이후 헬로 돌리 플러그인이 자신의 디렉토리에 저장되지 않고 대부분의 플러그인에 대한이의 형태로 될 것입니다 {$subdir}\{$filename}.php
; 즉 Akismet의 파일 경로는 akismet/akismet.php
입니다.
그러나 delete_plugins()
포함하기 전까지는 사용할 수 없으며 /wp-admin/includes/plugin.php
의존성이 wp-admin/includes/file.php
있으므로 require_once()
호출하기 전에 두 가지를 모두 사용할 수 있습니다 delete_plugins()
. 마지막으로 WP_PLUGIN_DIR
상수와 결합 file_exists()
하여 메인 플러그인 파일을 삭제하기 전에 주 플러그인 파일이 존재하는지 확인합니다 ( 실패한 파일을 삭제 하려고 시도한 경우에는 중요하지 않지만 실제로 먼저 확인하는 것이 더 우아하며 방법을 알아야 할 수도 있습니다) 다른 이유로) :
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
if (file_exists(WP_PLUGIN_DIR . '/hello.php'))
delete_plugins(array('hello.php'));
참고 때로는 그 delete_plugins()
때문에 아마 파일 사용 권한 또는 플러그인이 현재 활성화되어있는 사실이나 먼저 해결해야하지만, 우리의 사용 사례에 대한 몇 가지 다른 이유로 실패합니다 안녕하세요 돌리 싸움없이 사라집니다.
리포지토리 플러그인 다운로드, 설치 및 활성화
사실 지금 저장소에서 다운로드 플러그인 할 필요가 없습니다 (나는 그냥이 할 수있는 좋을 것이다 생각했다) 우리는이 요구 사항 슬라이드를하자 나중에 다시 방문 할 것입니다.
플러그인 활성화
다음은 자체 사용자 정의 플러그인을 활성화하는 것입니다. 우리는 이미 플러그인 디렉토리에 그것들을 업로드했다고 가정 하고 WordPress를 위해 그것들을 활성화 해야합니다. ( 참고 :이 기술은 리포지토리 플러그인 활성화에도 적용되며, 먼저 다운로드하여 설치하지는 않습니다.)
우리는 activate_plugin()
like delete_plugins()
가 /wp-admin/includes/plugin.php
포함 되어야 하는 기능을 사용할 것입니다. 그러나 활성화를 자동화하지 않고 삭제 하지 않는/wp-admin/includes/file.php
경우에는 필요 하지 않습니다 .
우리는 다시 존재 여부를 테스트하고 (없는 경우 활성화 할 필요가 없습니까?)is_plugin_active()
플러그인을 아직 활성화하지 않은 기능을 사용하여 확인합니다 . 참고 이번에 는 플러그인 식별자가 여러 번 중복되는 것을 막기 위해 이번에는 ( $plugin_filepath
및 $plugin_dir
) 변수를 몇 개 사용했습니다 .
다음 예제 my-custom-plugin.php
는 my-custom-plugin
하위 디렉토리 에 있는 플러그인 을 활성화합니다 .
require_once(ABSPATH . 'wp-admin/includes/plugin.php');
$plugin_filepath = 'my-custom-plugin/my-custom-plugin.php';
$plugin_dir = WP_PLUGIN_DIR . "/{$plugin_filepath}";
if (file_exists($plugin_dir) && !is_plugin_active($plugin_filepath))
activate_plugin($plugin_filepath);
선호하는 테마 활성화
테마를 활성화하는 것은 플러그인을 삭제하거나 활성화하는 것보다 비교적 쉽습니다. 한 번의 함수 호출 만 있으면 switch_theme()
됩니다.. switch_theme()
함수는 두 개의 허용 (2) : 파라미터 템플릿 및 스타일 시트 . 글쎄, 적어도 그게 매개 변수의 이름입니다. Parent Theme 및 Child Theme 용어에 더 익숙 할 것 입니다.
부모 테마 인 WordPress와 함께 제공되는 기본 TwentyTen 테마 로 하위 테마 를 작성하고 이를 "내 사용자 정의 테마"라고 하고이를 디렉토리에 배치했다고 가정 하면 다음 호출을 사용하여 테마를 활성화합니다./wp-content/themes/my-custom-theme
switch_theme('twentyten', 'my-custom-theme');
그러나 어린이 테마가 아닌 경우 어떻게해야합니까? 쉽게 그건 그냥 통과 디렉토리 슬러그 / 테마 식별자 (즉,의 하위 디렉토리 오프의 이름 /wp-content/themes
그 테마 포함) 모두 매개 변수로합니다. 당신이 활성화 할 가정 주제별 테마 로 이안 D 스튜어트 당신이 한 통화 switch_theme()
과 같이 :
switch_theme('thematic', 'thematic');
개인적으로 나는 여기에 두 가지 세부 사항을 모두 추적해야하기 때문에 약간 혼란 스럽다고 생각합니다. activate_my_theme()
먼저 기능 을 확인하고 get_current_theme()
활성화하지 않으면 먼저 확인 하는 기능 을 작성 했습니다. 하위 테마 (일명 "스타일 시트") 를 말하면 기능 에서 세부 정보를 가져 와서 상위 테마 (일명 "템플릿") 를 파악할 수 get_theme()
있습니다.
activate_my_theme('My Current Theme');
function activate_my_theme($theme_name) {
if ($theme_name!=get_current_theme()) {
$theme = get_theme($theme_name);
switch_theme(
$theme['Template'],
$theme['Stylesheet']
);
}
}
한 가지 중요한 점은 알고 있어야합니다 ; get_theme()
기능 예상하는이 전달되는 이름 아동 테마의 NOT 그것의 디렉토리 슬러그 / 테마 식별자. (이름은 테마 style.css
파일 의 헤더에있는 "Theme Name :"섹션에 있습니다. 다행히도 get_current_theme()
함수도 이름을 반환합니다.)
style.css
WordPress 기본 테마 Twenty Ten 의 파일 에서 헤더를 검사하면 실제로 이름이 다음과 'Twenty Ten'
같습니다.
/*
Theme Name: Twenty Ten
Theme URI: http://wordpress.org/
Description: The 2010 theme for WordPress is stylish, customizable, simple, and readable -- make it yours with a custom menu, header image, and background. Twenty Ten supports six widgetized areas (two in the sidebar, four in the footer) and featured images (thumbnails for gallery posts and custom header images for posts and pages). It includes stylesheets for print and the admin Visual Editor, special styles for posts in the "Asides" and "Gallery" categories, and has an optional one-column page template that removes the sidebar.
Author: the WordPress team
Version: 1.1
Tags: black, blue, white, two-columns, fixed-width, custom-header, custom-background, threaded-comments, sticky-post, translation-ready, microformats, rtl-language-support, editor-style
*/
"Hello World" 게시물 삭제
다음으로 "Hello World" 게시물 을 삭제하려고합니다 . 당신은 알 수도 @Rarst이 방법을 사용하는 우리에게 보여 주었다 wp_delete_post()
우리가 필요로 정확히 어떤 기능을. 그가 설명했듯이 두 번째 매개 변수는 게시물을 휴지통으로 옮기는 대신 게시물을 완전히 삭제하며 첫 번째 매개 변수는 $post->ID
입니다.
물론 대신 슬러그 를 지정할 수있어서 좋을 $post->ID
것이므로 그렇게하는 방법을 찾기로 결정했습니다. 약간의 spelunking 후 WordPress에 불행히도 명명 된 함수가 get_page_by_path()
있어 실제로 슬러그로 게시물 유형을 조회 할 수 있습니다 (불행히도 이름이 다른 게시물 유형으로 작동하는 것을 찾을 때 간과 할 수 있기 때문에 이름이 지정되었습니다 'page'
).
우리 get_page_by_path()
는 WordPress에 정의 된 상수를 전달 하기 때문에 OBJECT
포스트 객체 형태의 포스트를 반환합니다. 세 번째 매개 변수의 경우 'post'
게시물 유형을 조회하기를 원했습니다 'post'
. get_page_by_path()
포스트 객체를 반환 할 것이기 때문에 null
슬러그와 일치하는 포스트가 없으면 존재를 확인하고 동시에 조회 할 수 있습니다
$post = get_page_by_path('hello-world',OBJECT,'post');
if ($post)
wp_delete_post($post->ID,true);
참고 : 데이터베이스의 모든 게시물을 삭제하는 코드를 실행할 수는 있지만 유지하려는 게시물을 추가 한 후에는이 코드를 다시 실행할 수 없으며 이는 디자인 제약 조건 중 하나였습니다.
다음 것...
내가 끝날 때까지 또는 다른 사람이 도울 때까지 알아 내면서 계속해서 추가 할 것입니다.
Create Menus for Custom Pages
있습니까? 일부 페이지의 개별 메뉴 영역 또는 무엇을 의미합니까?