検索
ホームページCMS チュートリアル&#&プレスWordPressプラグインボイラープレートパート2:プラグインの開発

WordPressプラグインボイラープレートパート2:プラグインの開発

ワードプレスプラグインボイラープレートの紹介である私のシリーズの最初の部分では、ボイラープレート内でコードがどのように整理されているかを調べました。このシリーズを続けるために、実際の作業プラグインを構築するために以前に学んだことを適用します。できるだけ少ない作業で、ボイラープレートコードを使用してプラグインを稼働させることができる速さを見てみましょう。

この記事では、プラグインの作成とアクティブ化、およびプラグインの管理に直面する機能性の開発に焦点を当てます。このチュートリアルに従うには、PHPとWordPressの基本的な理解と、WordPressプラグインAPIの実用的な知識が必要です。

キーテイクアウト

WordPressプラグインボイラープレートを利用して、構造化された整理されたアプローチで開発プロセスを促進し、ベストプラクティスに従うことを保証します。
    設定APIを使用してオプションページを追加してプラグインをカスタマイズして、ユーザーが通知の表示位置や、投稿が時代遅れと見なされる日数などの設定を変更できるようにします。
  • 設定を登録し、設定フィールドを追加し、ボイラープレート内の提供されたクラスとメソッドを使用してこれらの設定値の保存と取得を処理することにより、プラグインの機能を実装します。 オプションページのクリーンでユーザーフレンドリーなインターフェイスを作成して、プラグインの管理機能を最適化し、設定が正しく保存されて表示されていることを確認してください。 コードのクリーンアップ、国際化、およびより選択的なアプリケーションロジックなど、プラグインの効率とユーザーエクスペリエンスを改良するなど、さらに強化するための計画。
  • プラグインについて
  • 特定の投稿が最後に更新されてから日数を表示するシンプルなプラグインを開発します。また、プラグインにいくつかの簡単なカスタマイズを提供し、ユーザーが投稿が時代遅れと見なされる特定の日数を選択できるようにし、ポストコンテンツの通知の位置を選択できます。 >
  • ボイラープレートの準備
  • 最初の記事で述べたように、ボイラープレートの新しいコピーをダウンロードして検索を行い、自分自身を交換するか、非公式のWordPressプラグインボイラープレートジェネレーターを使用してプロセスを高速化することができます。プラグインにジェネレーターを使用しましょう。
  • WordPressプラグインボイラープレートジェネレーターのWebサイトにアクセスし、適切な値をフォームに記入します。プラグインを「時代遅れの通知」と呼びましょう。これは、フィールドが入ったサンプルフォームです。

公式リポジトリにリンクするプラグインURLに想像上のURLを使用しています。このようなことについてあまり心配しないでください。プラグインヘッダーでいつでも変更できるので、

[ビルド]ボタンをクリックすると、WordPressプラグインボイラープレートの素敵でカスタマイズされたコピーを取得する必要があります。 プラグインのインストールとアクティブ化

生成されたZIPアーカイブには、2つの予想されるディレクトリ、資産とトランクが含まれます。プラグインをインストールする際にSymlinkルートを使用することはないので、アーカイブのトランクフォルダーを抽出して、WP-Content/Pluginsディレクトリにコピーします。

他のプラグインとの命名競合を回避するために適切に名前を変更する必要があるため、トランクディレクトリを時代遅れに変更します。

WP-Adminの「インストールされたプラグイン」セクションに移動すると、確かに、プラグインがインストールされているがまだアクティブ化されていないプラグインのリストに表示されます。プラグインボイラープレートジェネレーターは、プラグインの説明に関して何も変更しないため、変更したい場合は、メインプラグインファイル(私たちの場合はanuptated-notice.php。

)で説明を編集できます。

「アクティブ化」をクリックして、光沢のある新しいプラグインをアクティブにします。 WordPressサイトでは何も変更されないので、プラグインをアクティブにした後もまだ見えるものがないことを心配しないでください。

オプションページの追加WordPressプラグインボイラープレートパート2:プラグインの開発

プラグイン開発者は通常、ユーザーがプラグインの設定をカスタマイズする手段を提供します。これは、WordPressが提供する設定APIを利用することで実現できます。自分の設定をプラグインに統合するにはどうすればよいですか。 要するに、ポストコンテンツの前またはポストコンテンツの後に、ユーザーが通知が表示される場所を選択できるようにします。しきい値のしきい値に関する限り、ユーザーは投稿が時代遅れと見なされる前に日数を設定できます。その情報を使用して、通知のクラスを動的に変更して、まだ新鮮と見なされている投稿とは違うスタイルができるようにします。

プラグインのオプションページを追加して、開始しましょう。

管理者フォルダー内にclass-outated-notice-admin.phpを開きます。このクラスを変更して、プラグインの設定ページを登録できるようにする必要があります。この公開方法をクラスの終わりに向けて追加します。

注意すべきことの1つは、クラスを使用してフックを定義するため、どの関数が呼び出されるかを直接指定する代わりに、配列(私たちはまだ完全には完了していません!ご覧のとおり、add_options_pageには有効なコールバック関数が必要です。これは、outstated_notice_adminクラスでまだ定義されていません。追加してみましょう。これは、管理者/partialsフォルダーに含まれている古くなったnotice-admin-display.phpを使用するため、十分に簡単です。したがって、コールバック関数のためにしなければならないことは、そのファイルを含めることだけです。
<span>/**
</span><span>	 * Add an options page under the Settings submenu
</span><span>	 *
</span><span>	 * <span>@since  1.0.0
</span></span><span>	 */
</span>	<span>public function add_options_page() {
</span>	
		<span>$this->plugin_screen_hook_suffix = add_options_page(
</span>			<span>__( 'Outdated Notice Settings', 'outdated-notice' ),
</span>			<span>__( 'Outdated Notice', 'outdated-notice' ),
</span>			<span>'manage_options',
</span>			<span>$this->plugin_name,
</span>			<span>array( $this, 'display_options_page' )
</span>		<span>);
</span>	
	<span>}</span>

それはそれをするはずです。今すぐやらなければならない最後のことは、ボイラープレートの提供されたローダークラスを使用して正しくロードすることです。 class-outdated-notice.phpをインクルードフォルダーに開き、define_admin_hooksメソッド内で以前に定義した追加のフックを追加します。オプションページに含める適切なアクションフックはadmin_menuなので、追加しましょう。

<span>/**
</span><span>	 * Render the options page for plugin
</span><span>	 *
</span><span>	 * <span>@since  1.0.0
</span></span><span>	 */
</span>	<span>public function display_options_page() {
</span>		<span>include_once 'partials/outdated-notice-admin-display.php';
</span>	<span>}</span>
設定の下に追加の「時代遅れの通知」サブメニューが表示されるようになりました。 url http:// /wp-admin/options-general.php?page=outdated-notice。

今のところ空白のページなので、適切なマークアップで部分ファイルの穴を開けるようにしましょう。

設定値の登録、保存、および取得

WordPress Codexの設定APIページは、オプションページに表示するなど、独自の設定を登録する方法についての良い説明を提供します。

このセクションで私たちがやろうとしていることの内訳は次のとおりです。

ボイラープレートローダーでフックを登録します

設定セクション

を登録します
    2つの設定フィールド(しきい値日とテキストの位置)
  1. を登録します 2つの設定を登録します
  2. オプションページに挿入します
  3. ディスプレイのためにフィールドを保存および再編成します。
  4. フックをボイラープレートローダーに登録します
  5. すべての手順を1つずつ進めましょう。
  6. 設定セクションを登録するには、Register_Setting関数を使用する必要があります。その関数を初期化するための適切なフックはadmin_initです。したがって、最初に別のフックをボイラープレートローダーに追加して、メインボイラープレートクラスのdefine_admin_hooksメソッド内に設定を登録します。
物事をより簡単にし、オプション名に基本的な種類の名前を提供するために、このクラスの上に別のプライベート変数を追加します。このスニペットをundated_notice_adminクラスの上に置いてください。

これからは、この値をオプションに関連するものにプレップするつもりです。

次のことは、実際に設定セクション、設定フィールド、個々の設定を登録することです。 outdated_notice_adminクラスをもう一度開き、public method register_settingを追加します。

設定セクション
<span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>
を登録します

public register_settingメソッド内で、設定セクションを登録します。 Codexはすでに開始するのに十分な情報を提供しているため、さまざまな機能やAPIをあまり掘り下げてこれを行うことはありません。プラグインの設定は比較的簡単であるため、1つのセクションのみを登録します。

このスニペットを使用すると、add_settings_section関数を使用して、オプションページの「一般」セクションを登録できます。
<span>/**
</span><span>	 * Add an options page under the Settings submenu
</span><span>	 *
</span><span>	 * <span>@since  1.0.0
</span></span><span>	 */
</span>	<span>public function add_options_page() {
</span>	
		<span>$this->plugin_screen_hook_suffix = add_options_page(
</span>			<span>__( 'Outdated Notice Settings', 'outdated-notice' ),
</span>			<span>__( 'Outdated Notice', 'outdated-notice' ),
</span>			<span>'manage_options',
</span>			<span>$this->plugin_name,
</span>			<span>array( $this, 'display_options_page' )
</span>		<span>);
</span>	
	<span>}</span>

他のプラグインとの競合を防ぐために、変数$ option_nameを使用してセクション名を事前に保留していることに注意してください。コールバックを使用して、私たちのセクションに関する追加情報を提供できます。これはまさに私たちが望むものです。

このセクションに関する基本情報をエコーする別のパブリックメソッド、outdated_notice_general_cbを追加します。

2つの設定フィールド(しきい値日とテキストの位置)
<span>/**
</span><span>	 * Render the options page for plugin
</span><span>	 *
</span><span>	 * <span>@since  1.0.0
</span></span><span>	 */
</span>	<span>public function display_options_page() {
</span>		<span>include_once 'partials/outdated-notice-admin-display.php';
</span>	<span>}</span>
を登録します

使用する必要がある設定APIの次の部分は、オプションページでレンダリングされる実際のフィールドを登録することです。これは、add_settings_field関数を使用して実現できます

テキスト位置構成には無線ボタンを使用します。これは、このコードを持っているregister_setting関数に追加することによって行われます。

add_settings_fieldの5番目の引数が、以前に登録した正しい設​​定セクションを指していることを確認する必要があります。

これはまだ行われていません。ラジオボタンの実際のマークアップをレンダリングするコールバック関数を提供する必要があります。 outdated_notice_position_cb関数では、このコードブロックを含める必要があります。

<span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>
デイしきい値の2番目のオプションは、通常のテキスト入力を使用して構成できます。したがって、別の設定フィールドを登録します:

繰り返しますが、テキストフィールドをレンダリングするコールバック関数も提供する必要があります。

<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>
設定を登録

最後に、WordPress内で認識できるように、使用するオプション名を登録する必要があります。 2つの異なるオプション名を使用しているため、antstated_notice_positionとoutstated_notice_dayを使用しているため、Register_setting関数を使用してそれらを登録します。
<span>/**
</span><span>	 * The options name to be used in this plugin
</span><span>	 *
</span><span>	 * <span>@since  	1.0.0
</span></span><span>	 * <span>@access 	private
</span></span><span>	 * <span>@var  	<span>string</span> 		$option_name 	Option name of this plugin
</span></span><span>	 */
</span>	<span>private $option_name = 'outdated_notice';</span>

register_setting関数の3番目のパラメーターは消毒コールバックであることに注意してください。オプションですが、データベースに保存する前に入力値が消毒されることを確認することは常に有用です。

day Sanitizationの場合、私たちの場合は十分であるため、内蔵PHP関数、Intvalを使用します。テキスト通知の位置については、独自のサニタイズコールバック関数を定義します。これにより、特定の値のみがデータベースに保存されます。これは、特定の値に限定されたオプションを扱う場合に特に便利です。この場合、2つの値のみを受け入れるだけで、それが前後であるため、サニタイズコールバックは、値がその1つでない場合を確認する必要があります。これらは、データベースに保存されません
<span>// Add a General section
</span>	<span>add_settings_section(
</span>		<span>$this->option_name . '_general',
</span>		<span>__( 'General', 'outdated-notice' ),
</span>		<span>array( $this, $this->option_name . '_general_cb' ),
</span>		<span>$this->plugin_name
</span>	<span>);</span>
これを実現するための簡単な消毒コールバック関数があります
<span>/**
</span><span>	 * Add an options page under the Settings submenu
</span><span>	 *
</span><span>	 * <span>@since  1.0.0
</span></span><span>	 */
</span>	<span>public function add_options_page() {
</span>	
		<span>$this->plugin_screen_hook_suffix = add_options_page(
</span>			<span>__( 'Outdated Notice Settings', 'outdated-notice' ),
</span>			<span>__( 'Outdated Notice', 'outdated-notice' ),
</span>			<span>'manage_options',
</span>			<span>$this->plugin_name,
</span>			<span>array( $this, 'display_options_page' )
</span>		<span>);
</span>	
	<span>}</span>

オプションページに挿入します

関連するすべての設定の登録が完了したら、オプションページが正しくレンダリングされることを確認する必要があります。 WordPressの方法を使用してフィールドと設定を登録しているため、このタスクは特に簡単です。

admin/partialsフォルダー内で時代遅れのadmin-display.phpを開きます。 以前に登録した設定に基づいてオプションページをレンダリングする方法は次のとおりです。

do_settings_sectionsとsettings_fields関数の単純な組み合わせにより、オプションページはまったく完了します。
<span>/**
</span><span>	 * Render the options page for plugin
</span><span>	 *
</span><span>	 * <span>@since  1.0.0
</span></span><span>	 */
</span>	<span>public function display_options_page() {
</span>		<span>include_once 'partials/outdated-notice-admin-display.php';
</span>	<span>}</span>
休憩を取り、オプションページを更新しましょう。

フィールドを保存して再貯蔵します

WordPressプラグインボイラープレートパート2:プラグインの開発いくつかの値に記入して、フォームを保存してみてください。 「設定が保存されている」という通知を取得する必要があります。しかし、何も起こりませんでした。両方のオプションにvar_dumpを実行してみましょう。これを関連する関数のどこかに配置します。

以下の例に従って、データベースからいくつかの値を取り戻す必要があります:

<span>$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_options_page' );</span>

それは私たちのフォームが正常に機能していることを意味します。したがって、行う必要がある唯一のことは、テキストフィールドに現在の値を表示し、正しいラジオボタンがチェックされていることを確認することです。

最初にラジオボタンに取り組みましょう。ショートカットとして、WordPressが提供するチェック機能を使用して、以前に選択された値をマークするだけです。 outstated_notice_position_cbには、いくつかの変更が必要です。
<span>$this->loader->add_action( 'admin_init', $plugin_admin, 'register_setting' );</span>

コールバック用の更新されたスニペットです。

さて、いずれかのフィールドの値を変更するたびに、オプションページに正しく反映されます。

さらなる改善

<span>/**
</span><span>	 * The options name to be used in this plugin
</span><span>	 *
</span><span>	 * <span>@since  	1.0.0
</span></span><span>	 * <span>@access 	private
</span></span><span>	 * <span>@var  	<span>string</span> 		$option_name 	Option name of this plugin
</span></span><span>	 */
</span>	<span>private $option_name = 'outdated_notice';</span>
これは決して完全ではありません。このプラグインの管理者に直面する機能をいつでも改善できます。私が考えることができることのいくつかは次のとおりです。

コードクリーンアップ - WordPressプラグインボイラープレートには多くの有用な機能が備わっていますが、私たちの場合、管理側ではCSSとJSの負荷がまったく不要です。コードベースからいつでもそれを削除して、それを小さくすることができます。

i18n(Internationalization)Ready - プラグインでは__()と_e()を広範囲に使用していますが、実際のi18nプロセスは実際には実行されません。このトピックは、この記事では、このトピックがSitePointでかなり広範囲に議論されているため、ここではプロセスをカバーしません。

より細かい選択 - 実装がすべての投稿に適用されるため、特定のカテゴリ内の投稿または特定のタグがある投稿に適用するようにさらに最適化できます。

完全なコードは、パート2ブランチのこのGitHubリポジトリから表示できます。

結論

関連する設定を登録し、ユーザーがプラグインをカスタマイズするオプションページを作成することにより、基本的な管理者に向かう機能を備えたプラグインを作成しました。 WordPressプラグインボイラープレートを使用して比較的短い時間で、コードの品質を損なうことなくこれを達成しましたが、WordPressが推奨するようにベストプラクティスに準拠しています。

ポストコンテンツ内に適切な通知を表示するためにプラグインの一般の側面を行うシリーズの次の部分にご期待ください。

ボイラープレートを使用したWordPressプラグインの開発に関するよくある質問WordPressプラグインボイラープレートは何ですか?なぜそれを使用する必要がありますか?

WordPressプラグインボイラープレートは、高品質のWordPressプラグインを構築するための標準化され、整理された、オブジェクト指向のフレームワークです。理解しやすく、作業しやすい明確で一貫した構造を提供します。このボイラープレートを使用すると、プラグインの基本構造をセットアップする際に多くの時間と労力を節約できます。また、プラグインがWordPressのコーディング標準とベストプラクティスに従うことを保証します。これにより、バグや互換性の問題を防ぐのに役立ちます。 WordPressプラグインボイラープレートを使用すると、最初にGitHubリポジトリからダウンロードする必要があります。ダウンロード後、ボイラープレートのディレクトリとファイルの名前を変更して、プラグインの名前と一致させることができます。次に、ボイラープレートの既存の構造に独自のカスタム機能を追加することにより、プラグインの開発を開始できます。主なコンポーネント。これらには、プラグインヘッダーとローダークラスが含まれるプラグインファイルが含まれます。コアプラグインクラスおよびその他の機能関連ファイルを含むディレクトリを含む。プラグインの管理者固有の機能に関連するファイルを含む管理ディレクトリ。プラグインのパブリック機能に関連するファイルを含むパブリックディレクトリ。 WordPressプラグインボイラープレートでは、ディレクトリを含む新しいクラスを作成できます。これらのクラスは、ボイラープレートが提供するベースクラスを拡張する必要があります。その後、これらのクラスに独自のメソッドを追加して、目的の機能を実装できます。必要に応じて既存のクラスとメソッドを変更することもできます。

WordPressプラグインボイラープレートのプラグイン設定を処理するにはどうすればよいですか?このクラスには、設定の登録、設定フィールドの表示、および設定値の消毒方法が含まれます。このクラスを、独自の設定機能を実装するための出発点として使用できます。

プラグインに管理者固有の機能を追加するにはどうすればよいですか?

管理者固有の機能をプラグインに追加するには、WordPressプラグインボイラープレートの管理ディレクトリで提供されるクラスとメソッドを使用できます。このディレクトリには、管理ページの作成、設定フィールドの追加、フォームの送信の処理のためのクラスが含まれています。

プラグインにパブリック面の機能を追加するにはどうすればよいですか?プラグインでは、WordPressプラグインボイラープレートのパブリックディレクトリで提供されるクラスとメソッドを使用できます。このディレクトリには、スクリプトとスタイルをエンキューするクラス、および公開コンテンツを表示するためのクラスが含まれています。国際化。このクラスには、プラグインのテキストドメインをロードする方法が含まれています。これにより、プラグインを異なる言語に翻訳できるようになります。

プラグインでAJAXリクエストを処理するにはどうすればよいですか? AJAXリクエストを処理するため。これらのクラスには、AJAXアクションの登録、AJAXリクエストの処理、AJAX応答の送信方法が含まれます。プラグインボイラープレートはいくつかの方法で実行できます。一般的な方法の1つは、WP-Config.phpファイルでwp_debug定数を使用することです。これにより、PHPエラー、通知、および警告が表示されます。また、WordPressで利用できるさまざまなデバッグプラグインを使用したり、PHPの組み込みエラーロギング機能を使用したりすることもできます。

以上がWordPressプラグインボイラープレートパート2:プラグインの開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
WordPressを3日で学ぶことはできますか?WordPressを3日で学ぶことはできますか?Apr 09, 2025 am 12:16 AM

3日以内にWordPressを学ぶことができます。 1.テーマ、プラグインなどのマスター基本知識。2。インストールや作業原則などのコア関数を理解します。 3.例を使用して、基本的および高度な使用法を学びます。 4.デバッグテクニックとパフォーマンスの最適化の提案を理解します。

WordPressはCMSですか?WordPressはCMSですか?Apr 08, 2025 am 12:02 AM

WordPressはコンテンツ管理システム(CMS)です。コンテンツ管理、ユーザー管理、テーマ、プラグイン機能を提供して、Webサイトコンテンツの作成と管理をサポートします。その実用的な原則には、ブログから企業Webサイトまで、さまざまなニーズに適したデータベース管理、テンプレートシステム、プラグインアーキテクチャが含まれます。

ワードプレスは何に適していますか?ワードプレスは何に適していますか?Apr 07, 2025 am 12:06 AM

wordpressisisgoodforvirtalayanywebprojectoitsversitilityasacms.itexcelsin:1)ユーザーフレンドリー、柔軟性と柔軟性と顧客化の維持、およびプルージンの数値化; 3)seooptimization;

WixまたはWordPressを使用する必要がありますか?WixまたはWordPressを使用する必要がありますか?Apr 06, 2025 am 12:11 AM

WIXは、プログラミングの経験がないユーザーに適しており、WordPressは、よりコントロールと拡張機能を必要とするユーザーに適しています。 1)WIXはドラッグアンドドロップエディターとリッチテンプレートを提供しているため、Webサイトをすばやく構築できます。 2)オープンソースのCMSとして、WordPressには巨大なコミュニティとプラグインエコシステムがあり、詳細なカスタマイズと拡張をサポートしています。

WordPressの費用はいくらですか?WordPressの費用はいくらですか?Apr 05, 2025 am 12:13 AM

WordPress自体は無料ですが、使用するには余分な費用がかかります。1。WordPress.comは、無料から支払いまでの範囲のパッケージを提供し、価格は月あたり数ドルから数十ドルまでの範囲です。 2。WordPress.orgでは、ドメイン名(年間10〜20米ドル)とホスティングサービス(月額5〜50米ドル)を購入する必要があります。 3.ほとんどのプラグインとテーマは無料で、有料価格は数十から数百ドルです。適切なホスティングサービスを選択し、プラグインとテーマを合理的に使用し、定期的に維持および最適化することにより、WordPressのコストを効果的に制御および最適化できます。

WordPressはまだ無料ですか?WordPressはまだ無料ですか?Apr 04, 2025 am 12:06 AM

WordPressのコアバージョンは無料ですが、使用中に他の料金が発生する場合があります。 1。ドメイン名とホスティングサービスには支払いが必要です。 2。高度なテーマとプラグインが充電される場合があります。 3.プロフェッショナルサービスと高度な機能が請求される場合があります。

WordPressは初心者にとって簡単ですか?WordPressは初心者にとって簡単ですか?Apr 03, 2025 am 12:02 AM

WordPressは、初心者が簡単に始めることができます。 1.バックグラウンドにログインした後、ユーザーインターフェイスは直感的であり、シンプルなダッシュボードは必要なすべての関数リンクを提供します。 2。基本操作には、コンテンツの作成と編集が含まれます。 WysiWygエディターは、コンテンツの作成を簡素化します。 3.初心者は、プラグインとテーマを介してウェブサイトの機能を拡張でき、学習曲線は存在しますが、練習を通じて習得できます。

なぜWordPressを使用するのはなぜですか?なぜWordPressを使用するのはなぜですか?Apr 02, 2025 pm 02:57 PM

人々は、その力と柔軟性のためにWordPressを使用することを選択します。 1)WordPressは、さまざまなWebサイトのニーズに適した、使いやすさとスケーラビリティを備えたオープンソースのCMSです。 2)豊富なテーマとプラグイン、巨大なエコシステム、強力なコミュニティサポートがあります。 3)WordPressの作業原則は、テーマ、プラグイン、コア関数に基づいており、PHPとMySQLを使用してデータを処理し、パフォーマンスの最適化をサポートします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール