Как получить значение из функции и вывести в объект?

258
30 апреля 2017, 00:26

Как вывести значение $username & $photos из функции в $dataToBePassed (сейчас выводит null):

$dataToBePassed = array(
    'username' => $username,
    'kolichestvo' => $photos
);

Ниже приведен полный скрипт

wp_enqueue_script( 'gw_script', plugins_url('/assets/js/gw-script.js', __FILE__), array('jquery'),'1.1', true );

class TextWidget extends WP_Widget {
    public function __construct() {
        parent::__construct("text_widget", "GWeb Instagram",
            array("description" => "Instragram widget"));
    }
    public function form($instance) {
        $title = "";
        $username = "";
        $photos = "";
        if (!empty($instance)) {
            $title = $instance["title"];
            $username = $instance["text"];
            $photos = $instance["num"];
        }

        $tableId = $this->get_field_id("title");
        $tableName = $this->get_field_name("title");
        echo '<label for="' . $tableId . '">Title</label><br>';
        echo '<input id="' . $tableId . '" type="text" name="' .
        $tableName . '" value="' . $title . '"><br>';
        $textId = $this->get_field_id("text");
        $textName = $this->get_field_name("text");
        echo '<label for="' . $textId . '">User name</label><br>';
        echo '<input id="' . $textId . '" name="' . $textName .
        '" value="' . $username . '"><br>';
        $photonum = $this->get_field_id("num");
        $photoname = $this->get_field_name("num");
        echo '<label for="' . $photonum . '">Photo number</label><br>';
        echo '<input id="' . $photonum . '" name="' . $photoname .
        '" value="' . $photos . '"><br>';
    }
    public function update($newInstance, $oldInstance) {
        $values = array();
        $values["title"] = htmlentities($newInstance["title"]);
        $values["text"] = htmlentities($newInstance["text"]);
        $values["num"] = htmlentities($newInstance["num"]);
        return $values;
    }
    public function widget($args, $instance) {
        $title = $instance["title"];
        $username = $instance["text"];
        $photos = $instance["num"];
        global $username;
        global $photos;
        echo "<h2>$title</h2>";
        echo "<div class='sidebar-instagram'><ul></ul></div>";
    }
}
$dataToBePassed = array(
    'username' => $username,
    'kolichestvo' => $photos
);
wp_localize_script( 'gw_script', 'php_vars', $dataToBePassed );
add_action("widgets_init", function () {
    register_widget("TextWidget");
});
?>
Answer 1

Попробуйте обратиться к вашим переменным username и photos так:

   echo '<input id="' . $photonum . '" name="' . $photoname .
    '" value="' .  $dataToBePassed['kolichestvo'] . '"><br>';

Так как вы используете ассоциативный массив, то и обращаться к нему нужно как ассоциативному.

Answer 2

Нашел доступное решение для меня, кому интересно, скрипт внизу:

<?php
wp_enqueue_script( 'gw_script', plugins_url('/assets/js/gw-script.js', __FILE__), array('jquery'),'1.1', true );

class TextWidget extends WP_Widget {
    public function __construct() {
        parent::__construct("text_widget", "GWeb Instagram",
            array("description" => "Instragram widget"));
    }
    public function form($instance) {
        $title = "";
        $username = "";
        $photos = "";
        if (!empty($instance)) {
            $title = $instance["title"];
            $username = $instance["text"];
            $photos = $instance["num"];
        }

        $tableId = $this->get_field_id("title");
        $tableName = $this->get_field_name("title");
        echo '<label for="' . $tableId . '">Title</label><br>';
        echo '<input id="' . $tableId . '" type="text" name="' .
        $tableName . '" value="' . $title . '"><br>';
        $textId = $this->get_field_id("text");
        $textName = $this->get_field_name("text");
        echo '<label for="' . $textId . '">User name</label><br>';
        echo '<input id="' . $textId . '" name="' . $textName .
        '" value="' . $username. '"><br>';
        $photonum = $this->get_field_id("num");
        $photoname = $this->get_field_name("num");
        echo '<label for="' . $photonum . '">Photo number</label><br>';
        echo '<input id="' . $photonum . '" name="' . $photoname .
        '" value="' . $photos  . '"><br>';
    }
    public function update($newInstance, $oldInstance) {
        $values = array();
        $values["title"] = htmlentities($newInstance["title"]);
        $values["text"] = htmlentities($newInstance["text"]);
        $values["num"] = htmlentities($newInstance["num"]);
        return $values;
    }
    public function widget($args, $instance) {
        $title = $instance["title"];
        $username = $instance["text"];
        $photos = $instance["num"];
        echo "<h2>$title</h2>";
        echo "
        <script>
            username = '$username',
            kolichestvo = $photos
        </script>
        ";
        echo "<div class='sidebar-instagram'><ul></ul></div>";
    }

}
add_action("widgets_init", function () {
    register_widget("TextWidget");
});
?>
READ ALSO
Создание thumbnail для записи

Создание thumbnail для записи

Подскажите, допустим с помощью парсера получаю url картинки на сайте, с которого нужно скопировать картинкиИ нужно создать thumbnail для определённой...

226
Denwer и mkdir() функция

Denwer и mkdir() функция

На локальном хостинге использую denwer, пытаюсь создать папку с помощью функции mkdir(), ошибку не выдаёт но и ни чего не создаётМожет в php

287
Подсчёт обращений к php файлу через ajax

Подсчёт обращений к php файлу через ajax

Всем доброго времени сутокподскажите кто может, как можно подсчитать количество обращений к php файлу через ajax ? Имеются 2 страницы - 01

239
Open Server Как настроить кодировку?

Open Server Как настроить кодировку?

Видела аналогичную тему, но ответ не понялаВ каком именно файле нужно поменять на utf-8?

542