Я относительно новичок в php и wordpress. Я пытаюсь создать собственный виджет для отображения всех папок и файлов в моем ведре на боковой панели. Я протестировал код за пределами виджета, но когда я помещаю его в объект класса и пытаюсь перетащить его на свою страницу с помощью elementor в wordpress, я получаю ошибку 500 и не могу обновить страницу. Я чувствую, что упускаю что-то очень очевидное, но сегодня я почесал голову.
Это выполняется на сервере qa с использованием aws php sdk.
<?php
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
class S3_Widget extends WP_Widget {
// php classnames and widget name/description added
function __construct() {
$widget_options = array(
'classname' => 's3_widget',
'description' => 'Add a formatted list of s3 folders & files to the sidebar.'
);
parent::__construct(
's3_widget',
'S3 Widget',
$widget_options
);
}
// create the widget output
function widget( $args, $instance ) {
require_once 'vendor/aws.phar';
$bucket = 'gravityforms-bucket';
// Instantiate the client.
$s3 = new S3Client([
'profile' => 'formsS3',
'version' => 'latest',
'region' => 'us-west-2'
]);
echo "";
// Use the high-level iterators (returns ALL of your objects).
try {
$results = $s3->getPaginator('ListObjects', [
'Bucket' => $bucket
]);
foreach ($results as $result) {
foreach ($result['Contents'] as $object) {
echo "" . $object['Key'] . PHP_EOL . "";
}
}
} catch (S3Exception $e) {
echo $e->getMessage();
} catch (Exception $e) {
echo "errorMessage::"; echo print_r($e->getMessage(), true); echo "
";
}
echo "";
}
обновление функции ($ new_instance, $ old_instance) {
$ instance = $ old_instance;
$ instance ['title'] = strip_tags ($ new_instance ['title']);
вернуть $ экземпляр;
}
}
// зарегистрируем виджет
function s3_register_widgets () {
register_widget ('S3_Widget');
}
add_action ('widgets_init', 's3_register_widgets');
?>