Я новичок в разработке плагинов и WP, поэтому мне нужна помощь.
Я пытаюсь сделать плагин, который будет использовать / повторно использовать определенные изображения из папки мультимедиа и отображать их в боковом виджете.для определенной страницы, способом, который мне нравится, или с использованием шорткодов на определенной странице.(поэтому должно работать как с виджетами «посты \ страницы», так и с виджетами боковой панели).
Он должен использоваться несколько раз, на многих страницах
Я решил создать свою собственную таблицу в базе данных WP, хотя я уже читал здесь, в посте, что она, возможно, не нужна: Разработка плагина WordPress с использованием ООП
Я борюсь на нескольких полях.Сначала у меня были проблемы, чтобы найти достойное объяснение, как создать виджет, который можно использовать несколько раз.Хорошо, я решил это, используя:
class FeatDispWidget extends WP_Widget {...}
примеров, и это действительно работает, я могу иметь несколько экземпляров, и данные сохраняются в wp_options.
Теперь я пытаюсь использовать $ wpdb.И из всех возможных примеров я вижу, что я должен использовать глобальный $ wpdb или включить некоторые файлы php, или расширить wpdb своим собственным классом БД, но каков наилучший / правильный путь в подходе ООП?
это частьмоего кода, конструктор и попробуйте вызвать функцию БД, которая постоянно дает мне ошибки.
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_widget, куда я помещаю $ wpdb для создания таблицы в базе данных wp
пока это все, я думаю, что взял что-то сложное для моего первого виджета, но я не сдаюсь!:)