私はプラグインとWP開発の新人です。
私がしようとしているのは、メディアフォルダの特定のイメージを使用/再利用するプラグインです。サイドウィジェット、特定のページ、好きな方法、または特定のページ内のショートコードを使用して表示します。 (したがって、両方の投稿\ページとサイドバーウィジェットで動作するはずです)。
多くのページで何度も使用する必要があります。私がやることにしました何
は、私はそれが多分必要とされていないことをポストにここに読んだにも関わらず、WPのデータベースに自分のテーブルを作成することです:WordPress plugin development using OOP
、私はいくつかのフィールドに苦労しています。最初に、複数回使用できるウィジェットを作成する方法をうまく説明するのに問題がありました。 OK、私は、この使用して解決している:
class FeatDispWidget extends WP_Widget {...}
例を、そしてそれは本当に私が複数のインスタンスを持つことができ、動作し、データがwp_optionsを行う保存されます。
今、私は$ wpdbを使用しようとしています。そして、可能なすべての例から、グローバル$ wpdbを使用するか、またはいくつかのPHPファイルを含めるか、独自のDBクラスを使用してwpdbを拡張する必要がありますが、OOPアプローチではどのような方法が最適ですか?
これは私のコードの一部であり、コンストラクタであり、常にエラーを出すdb関数を呼び出そうとします。
class FeatDispWidget extends WP_Widget {
private $featdisplayer_table;
$featdisplayer_table = $wpdb->prefix . 'featdisplayer';
/**
* Widget setup.
*/
function FeatDispWidget() {
/* Widget settings. */
$widget_ops = array('classname' => 'featdisp', 'description' => __('Sexy Feature Displayer.', 'featdisp'));
/* Widget control settings. */
$control_ops = array('width' => 300, 'height' => 350, 'id_base' => 'featdisp-widget');
/* Create the widget. */
$this->WP_Widget('featdisp-widget', __('Feature Displayer Widget', 'featdisp'), $widget_ops, $control_ops);
}
function featDispDBsetup(){
global $wpdb;
global $featdisplayer_table;
if ($wpdb->get_var("show tables like '$featdisplayer_table'") != $featdisplayer_table) {
$sql = "CREATE TABLE $featdisplayer_table (".
"sandf_id INT NOT NULL AUTO_INCREMENT, ".
"type VARCHAR(30) NOT NULL, ".
"attachid INT NOT NULL, ".
"setid INT NOT NULL, ".
"imgpath LONGTEXT NOT NULL, ".
"title LONGTEXT NOT NULL, ".
"desc LONGTEXT, ".
"linkto LONGTEXT, ".
"altertext LONGTEXT, ".
"txtnxttoimg LONGTEXT, ".
"sortorder INT, ".
")";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
}
だから私の質問:
1)は、私がそうであるように、WP_widgetを拡張し、ページとサイドバーの両方に表示することができますか? 2)私は)各ページに一度(ウィジェットが複数回インスタンス化させるためにWP_widgetを拡張する必要があります 3)私は
ので、WPのデータベースにテーブルを作成するために、$のwpdbを置けばいいWP_widgetを、拡張する場合これは今のところ私の最初のウィジェットのために何かを複雑にしたと思うが、私はあきらめるつもりはない! :)