私が述べたように、私はすぐにこの必要性に取り組み始めるつもりだったので、私は前進しています。これらをノックダウンしていることを考えると、投稿を開始するのが最善だと考えました。それでも、他の誰かが私がやったことのない部分(の一部)を投稿できる場合は、私がやったことは何でもコピーして、あなたの答えを最良の答えとして選択させていただきます。それまでは、コードの投稿を開始します。
最初のもの:含めるwp-load.php
:
我々は唯一のサイト「ブートストラップ」に使用される実行初期にWebサイトのルートにスタンドアロンファイルを作成しているので、(私は鉱山と呼ばれる/my-init.php
)我々は、以下を含むことから始める/wp-load.php
WordPressのAPI関数をロードします:
<?php
include "wp-load.php";
サイトのユーザーを作成する
にあるwp_insert_user()
関数/wp-includes/registration.php
を使用してユーザーを作成します。このファイルはデフォルトではロードされないため、を呼び出して自分でロードする必要がありますrequire_once()
。
また、このget_user_by()
関数を使用して、ユーザーが既に作成されているかどうかを最初に確認します。コードを2回実行する必要はありません。注:これはパターンに従います。たとえば、特にユーザーが初期化する予定の項目のデータを追加または変更した後、複数回呼び出された場合、スクリプトは何も複製または上書きしないでください。
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
constantと組み合わせて使用し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()
あるような機能を使用しますが、削除ではなくアクティベーションを自動化するだけでよい場合は必要ありません。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);
好みのテーマを有効にする
テーマの有効化は、プラグインを削除または有効化するよりも比較的簡単です。必要なのは、1つの関数呼び出しだけですswitch_theme()
。switch_theme()
関数は、二つの受け入れ(2) :パラメータテンプレートとスタイルシートを。まあ、少なくともそれがパラメータの名前です。「親テーマ」および「子テーマ」という用語について詳しく知っているかもしれません。
親テーマであるWordPressに付属するデフォルトのTwentyTenテーマで子テーマを作成し、それを「My Custom Theme」と呼び、ディレクトリに配置したと仮定すると、この呼び出しを使用してテーマをアクティブにします。/wp-content/themes/my-custom-theme
switch_theme('twentyten', 'my-custom-theme');
しかし、それが子テーマではない場合はどうでしょうか?両方のパラメーターとして、ディレクトリスラッグ/テーマ識別子 (つまり、/wp-content/themes
テーマを含むサブディレクトリの名前)を渡すだけです。Ian D StewartによるThematicテーマをアクティブにしたい場合、次のように呼び出します。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()
関数が渡されることを期待する名前の子テーマの、しないことのディレクトリスラグ/テーマ識別子を。(名前は、テーマのstyle.css
ファイルのヘッダーにある「テーマ名:」セクションに由来します。幸いなことに、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()
まさに必要な関数の使用方法を示してくれたことにお気づきかもしれません。彼が説明したように、2番目のパラメーターは投稿をゴミ箱に移動するのではなく、完全に削除します$post->ID
。最初のパラメーターはです。
もちろん、スラッグの代わりにスラッグを指定できるといい$post->ID
ので、それを行う方法を見つけることにしました。いくつかのスペルチェックの後、WordPressには残念ながら名前の付いた関数がget_page_by_path()
あり、実際にスラッグで任意の投稿タイプを検索できることがわかりました(残念ながら、それ以外の投稿タイプで動作するものを見つけようとすると見落とす可能性があるため、名前が付けられています'page'
)。
get_page_by_path()
WordPressで定義された定数を渡す ためOBJECT
、postオブジェクトの形式で投稿が返されます。渡さ'post'
れた3番目のパラメーターでは、の投稿タイプをルックアップすることを示しました'post'
。以来get_page_by_path()
ポスト我々が必要とするオブジェクトまたはリターンを返します。null
何のポストは、我々が存在するかどうかを確認し、同時に検索を行うことができますスラグと一致しない場合:
$post = get_page_by_path('hello-world',OBJECT,'post');
if ($post)
wp_delete_post($post->ID,true);
注:データベース内のすべての投稿を削除するコードを実行することもできますが、保持したい投稿を追加すると、このコードを再度実行できなくなり、それが設計上の制約の1つでした。
次...
完了するまで、または他の誰かが手伝うまで、これを追加し続けます。
Create Menus for Custom Pages
か?一部のページの個々のメニュー領域を意味しますか?