{"id":233810,"date":"2023-02-23T19:00:00","date_gmt":"2023-02-23T16:00:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233810"},"modified":"2022-11-11T12:33:16","modified_gmt":"2022-11-11T09:33:16","slug":"opetus-looge-wordpressis-oma-ettevotte-jaoks-mikroandmete-vidin","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/opetus-looge-wordpressis-oma-ettevotte-jaoks-mikroandmete-vidin\/","title":{"rendered":"\u00d5petus: looge WordPressis oma ettev\u00f5tte jaoks mikroandmete vidin"},"content":{"rendered":"\n<p>Selles \u00f5petuses \u00f5pime, kuidas luua kohandatud vidinat, mis v\u00e4ljastab teie ettev\u00f5tteteavet, nagu ametlik nimi, aadress, telefoninumber ja e-posti aadress. Kuid me astume selle sammu edasi, v\u00e4ljastades selle <a href=\"https:\/\/schema.org\/docs\/gs.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mikroandmete<\/a> v\u00f5i skeemi m\u00e4rgistusega, mis v\u00f5imaldab otsingumootoritel teie sisu m\u00f5ista.<\/p>\n<p>Vidinad on d\u00fcnaamilised plokid, mida saab paigutada teie teema saadaolevatesse piirkondadesse. Tavaliselt on teie teemal v\u00e4hemalt \u00fcks k\u00fclgriba ja jaluses \u00fcks v\u00f5i mitu ala. Ettev\u00f5tteteabe lisamine jaluses vidinana on tavaline ja \u00fcsna nutikas \u2013 kuna jalus kuvatakse teie saidi k\u00f5igil lehtedel.<\/p>\n<p>Mikroandmed on t\u00e4iendavad HTML-i atribuudid, mis selgitavad, mida konkreetne HTML-m\u00e4rgend sisaldab, et masin saaks aru, mis need on (nt ettev\u00f5tte nimi, telefoninumber, ettev\u00f5tte aadress, ettev\u00f5tte e-posti aadress jne). See v\u00f5imaldab otsingumootoritel, nagu Google, teie HTML-ist teavet teie ettev\u00f5tte kohta eraldada.<\/p>\n<h2>Mida me loome<\/h2>\n<p>Meie vidin v\u00e4ljastab teavet mikroandmete skeemi <a href=\"https:\/\/schema.org\/LocalBusiness\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">LocalBusiness<\/a> abil, mis sobib suurep\u00e4raselt organisatsiooni v\u00f5i ettev\u00f5tte jaoks. See, milliseid atribuute soovite v\u00e4ljastada, on t\u00e4ielikult teie otsustada. Kl\u00f5psake \u00fclaloleval lingil, et lugeda k\u00f5iki LocalBusinessi v\u00f5imalikke atribuute (kaasa arvatud p\u00e4ritud). Teie ettev\u00f5te v\u00f5i riik v\u00f5ib eelistada teist t\u00fc\u00fcpi teavet.<\/p>\n<p>Selle \u00f5petuse vidin v\u00e4ljastab j\u00e4rgmise valikulise teabe:<\/p>\n<ul>\n<li>Ettev\u00f5tte nimi (mikroandmete atribuut: <code>legalName<\/code>)<\/li>\n<li>K\u00e4ibemaksu ID v\u00f5i organisatsiooni number (Mikroandmete atribuut: <code>vatID<\/code>)<\/li>\n<li>Postiaadress (mikroandmete silt: <code>PostalAddress<\/code>atribuutidega <code>streetAddress<\/code>, <code>postalCode<\/code>, ja <code>addressLocality<\/code>)<\/li>\n<li>Ettev\u00f5tte e-posti aadress (Mikroandmete vara: <code>email<\/code>)<\/li>\n<li>Telefoninumber (mikroandmete atribuut: <code>telephone<\/code>)<\/li>\n<\/ul>\n<p>See \u00f5petus ei juhenda teid vidina kujundamisel, kuna see peaks olema \u00fcsna lihtne. Esik\u00fcljel n\u00e4eb meie vidin v\u00e4lja nagu tavaline tekstividin. Kuid loomulikult on sellel kapoti all skeemi m\u00e4rgistus, mis aitab Google&#8217;it.<\/p>\n<h2>Kohandatud vidina loomise p\u00f5hit\u00f5ed<\/h2>\n<p>Saate oma koodi lisada oma teemasse <code>functions.php<\/code>v\u00f5i luua kohandatud pistikprogrammi. Pidage meeles, et kui hoiate selle pistikprogrammis, kaotate pistikprogrammi desaktiveerimisel vidina; ja samamoodi selle teemas hoidmine kaotab vidina, kui l\u00fclitute teisele teemale. Selles n\u00e4ites lisan koodi teemasse <code>functions.php<\/code>.<\/p>\n<p>Vidina loomine toimub objektorienteeritud PHP koodiga. Kirjutate PHP-klassi, mis laiendab WordPressi vidinaklassi, ja l\u00e4htestate selle, helistades <code>register_widget()<\/code>ja sisestades oma klassi nime. Selles \u00f5petuses olen andnud oma vidinaklassile nime <code>LocalBusiness<\/code>.<\/p>\n<p>Alustuseks kutsume <code>register_widget()<\/code>v\u00e4lja toiminguga \u00fchendatud funktsiooni <code>widgets_init<\/code>.<\/p>\n<pre><code>add_action('widgets_init', function() {\n    register_widget('LocalBusiness');\n});<\/code><\/pre>\n<p>Vaatame kiiresti \u00fcle kohandatud vidinaklassi skelett:<\/p>\n<pre><code>class LocalBusiness extends WP_Widget {\n\u00a0\n    \/\/ Initialize your widget in the class constructor\n    public function __construct() { }\n\u00a0\n    \/\/ Responsible for outputting the widget in frontend\n    public function widget($args, $instance) { }\n\u00a0\n    \/\/ Responsible for outputting the widget settings in admin\n    public function form($instance) { }\n\u00a0\n    \/\/ Responsible for saving settings in admin\n    public function update($new_instance, $old_instance) { }\n}<\/code><\/pre>\n<p>Nagu \u00fclalt n\u00e4ha, vajate oma klassis nelja funktsiooni. Vaatame iga funktsiooni \u00fckshaaval l\u00e4bi ja t\u00e4idame need.<\/p>\n<h2>LocalBusinessi mikroandmete vidina loomine<\/h2>\n<p>K\u00f5ige loogilisem koht alustamiseks on konstruktoris, mis vastutab sinu vidina seadistamise eest.<\/p>\n<h3>Funktsioon __construct().<\/h3>\n<p>Konstruktoris peate seadistama m\u00f5ned muutujad, n\u00e4iteks vidina nime, ja kutsuma esile vanema konstruktorifunktsiooni (\u00fclemklass on see, mida laiendate; <code>WP_Widget<\/code>). <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_widget\/__construct\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Konstruktoris v\u00f5imalike valikute kohta<\/a> loe l\u00e4hemalt siit. Esitan baas-ID, pealkirja ja kirjelduse, n\u00e4iteks:<\/p>\n<pre><code>\/\/ Initialize your widget in the class constructor\npublic function __construct() {\n    $widget_ops = [\n        'description' =&gt; __('Outputs business information with Microdata', 'txtdomain')\n    ];\n    parent::__construct('local_business', __('Local Business Information', 'txtdomain'), $widget_ops);\n}<\/code><\/pre>\n<p>Meetodis saate teha rohkem <code>__construct<\/code>, n\u00e4iteks panna skripte j\u00e4rjekorda v\u00f5i m\u00e4\u00e4rata rohkem vidina s\u00e4tteid. Kuid \u00fclaltoodust enamasti enamikul juhtudel piisab.<\/p>\n<h3>Funktsioon form().<\/h3>\n<p>J\u00e4rgmine samm on luua k\u00f5ik seaded ja sisendid, mida teie vidin administraatoris aktsepteerib. Seadete v\u00e4ljastamiseks vidina administraatorile kasutame funktsiooni, <code>form()<\/code>mis annab teile \u00fche parameetri; massiiv, mis sisaldab k\u00f5iki teie v\u00f5imalikke salvestatud vidinavalikuid. Andmete s\u00e4ilitamiseks on oluline, et v\u00e4ljastaksite k\u00f5igis sisendites vastavad salvestatud s\u00e4tted. (J\u00e4rgmises etapis vaatame, kuidas s\u00e4tteid salvestada).<\/p>\n<p>Vormifunktsioonis on palju j\u00e4lgimist, seega lisame k\u00f5igepealt juriidilise nime jaoks \u00fche sisendi ja veenduge, et m\u00f5istame, mida peame tegema.<\/p>\n<pre><code>\/\/ Responsible for outputting the widget settings in admin\npublic function form($instance) { \n    ?&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('legal_name'); ?&gt;\"&gt;&lt;?php _e('Legal name:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input \n            type=\"text\" \n            class=\"widefat\" \n            id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('legal_name')); ?&gt;\"\n            name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('legal_name')); ?&gt;\"\n            value=\"&lt;?php echo esc_attr($instance['legal_name']); ?&gt;\"\n        \/&gt;\n    &lt;\/p&gt;\n    &lt;?php\n}<\/code><\/pre>\n<p>Esiteks v\u00e4ljastab \u00fclaltoodud kood m\u00f5ned HTML-i \u00fcmbrised ja klassid kujul, nagu WordPress v\u00e4ljastab nende vidinavormid \u2013 teeme seda nii, et vorm n\u00e4eks kena v\u00e4lja.<\/p>\n<p>Peate tutvuma kahe funktsiooniga; <code>get_field_id()<\/code>ja <code>get_field_name()<\/code>ja need m\u00f5lemad on funktsioonid sees <code>WP_Widget<\/code>(sellep\u00e4rast kutsute &quot; <code>$this-&gt;<\/code>&quot; ees \u2013 samas kui <code>$this<\/code>see viitab klassi eksemplarile). Funktsioonid tagastavad vastavalt antud v\u00e4lja ID ja nime, mida kasutatakse teie sisendis <code>id<\/code>ja <code>name<\/code>atribuutides. See on v\u00e4ga oluline et \u00e4rge unustage <code>name<\/code>oma sisendile atribuuti lisada, vastasel juhul ei saa te salvestamisel kunagi selle v\u00e4\u00e4rtust k\u00e4tte.<\/p>\n<p>Ja l\u00f5puks v\u00e4ljastame praeguse salvestatud v\u00e4\u00e4rtuse <code>value<\/code>meie sisendiks, viidates l\u00e4bitud argumendile <code>$instance<\/code>. Kui seda oma v\u00e4\u00e4rtuse nimel ei tee, ei t\u00e4ideta sisendit kunagi andmebaasi salvestatuga ja see kuvatakse iga kord t\u00fchjana, mis v\u00f5ib kasutajaid segadusse ajada.<\/p>\n<p>Kui soovite erinevaid vormisisendeid, n\u00e4iteks m\u00e4rkeruudud v\u00f5i rippmen\u00fc\u00fcd, peaksite saama need h\u00f5lpsalt lisada, j\u00e4rgides \u00fclalmainitud reegleid. Lisame \u00fclej\u00e4\u00e4nud vidina seaded. Need on k\u00f5ik tekstisisendid, nii et see on sama kood, mida korrati \u00fclal, v\u00e4lja arvatud nende v\u00e4ljade ID-d. Meie <code>form()<\/code>meetod n\u00e4eb v\u00e4lja selline:<\/p>\n<pre><code>\/\/ Responsible for outputting the widget settings in admin\npublic function form($instance) { \n    ?&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('legal_name'); ?&gt;\"&gt;&lt;?php _e('Legal name:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('legal_name')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('legal_name')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['legal_name']); ?&gt;\" \/&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('vat_id'); ?&gt;\"&gt;&lt;?php _e('Vat ID\/Organization number:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('vat_id')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('vat_id')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['vat_id']); ?&gt;\" \/&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('street_address'); ?&gt;\"&gt;&lt;?php _e('Street address:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('street_address')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('street_address')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['street_address']); ?&gt;\" \/&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('postal_code'); ?&gt;\"&gt;&lt;?php _e('Postal code:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('postal_code')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('postal_code')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['postal_code']); ?&gt;\" \/&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('postal_city'); ?&gt;\"&gt;&lt;?php _e('City:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('postal_city')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('postal_city')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['postal_city']); ?&gt;\" \/&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('email_address'); ?&gt;\"&gt;&lt;?php _e('E-mail address:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('email_address')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('email_address')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['email_address']); ?&gt;\" \/&gt;\n    &lt;\/p&gt;\n    &lt;p&gt;\n        &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('phone_number'); ?&gt;\"&gt;&lt;?php _e('Phone number:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n        &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('phone_number')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('phone_number')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['phone_number']); ?&gt;\" \/&gt;\n    &lt;\/p&gt;\n    &lt;?php\n}<\/code><\/pre>\n<p>Kui lisate oma vidina saadaolevasse vidinaalasse, peaks see v\u00e4lja n\u00e4gema j\u00e4rgmine:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152019-61e4d2d64b664.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152019-61e4d2d64b664.png\" alt=\"\u00d5petus: looge WordPressis oma ettev\u00f5tte jaoks mikroandmete vidin\" ><\/a><\/p>\n<h3>Update() funktsioon<\/h3>\n<p>Funktsioon <code>update()<\/code>vastutab teie sisestatud v\u00e4\u00e4rtuste tegeliku salvestamise eest administraatorisse. Kahjuks ei tee WordPress seda teie eest automaatselt. Selles funktsioonis on kaks parameetrit; tavaliselt nimega <code>$new_instance<\/code>ja <code>$old_instance<\/code>. Esimese parameetri seest <code>$new_instance<\/code>leiate k\u00f5ik esitatud v\u00e4\u00e4rtused ja teisest <code>$old_instance<\/code>parameetrist leiate v\u00e4\u00e4rtused, mis on hetkel andmebaasi salvestatud. See v\u00f5imaldab teil vajadusel teha nutikaid v\u00f5rdlusi.<\/p>\n<p>Tavaliselt teete lihtsalt k\u00f5igist oma vidina seadetest uue massiivi ja salvestate k\u00f5ik, mis sees on <code>$new_instance<\/code>. Hoolitseme ka desinfitseerimise eest. L\u00f5puks tagastame lihtsalt selle massiivi, mis \u00fctleb WordPressile, mida salvestada.<\/p>\n<pre><code>\/\/ Responsible for saving settings in admin\npublic function update($new_instance, $old_instance) {\n    $instance = [];\n    $instance['legal_name'] = (!empty($new_instance['legal_name']))? strip_tags($new_instance['legal_name']): '';\n    $instance['vat_id'] = (!empty($new_instance['vat_id']))? strip_tags($new_instance['vat_id']): '';\n    $instance['street_address'] = (!empty($new_instance['street_address']))? strip_tags($new_instance['street_address']): '';\n    $instance['postal_code'] = (!empty($new_instance['postal_code']))? strip_tags($new_instance['postal_code']): '';\n    $instance['postal_city'] = (!empty($new_instance['postal_city']))? strip_tags($new_instance['postal_city']): '';\n    $instance['email_address'] = (!empty($new_instance['email_address']))? strip_tags($new_instance['email_address']): '';\n    $instance['phone_number'] = (!empty($new_instance['phone_number']))? strip_tags($new_instance['phone_number']): '';\n    return $instance;\n}<\/code><\/pre>\n<p>N\u00fc\u00fcd saate oma vidinat soovi korral testida ja kontrollida, kas teie sisestatud v\u00e4\u00e4rtusi salvestatakse. Ja kui m\u00e4letate <code>value<\/code>atribuuti \u00f5igesti m\u00e4\u00e4rama <code>form()<\/code>, kui salvestate ja vajutate v\u00e4rskendamisnuppu, peaksid v\u00e4\u00e4rtused s\u00e4ilima. Suurep\u00e4rane! N\u00fc\u00fcd viimase ja kindlasti k\u00f5ige l\u00f5busama sammu juurde \u2013 esiosa biti v\u00e4ljastamine.<\/p>\n<h3>Funktsioon vidin().<\/h3>\n<p>Funktsioon <code>widget()<\/code>vastutab teie vidina v\u00e4ljastamise eest kasutajaliideses. Funktsioonile saame kaks argumenti; esiteks massiiv kasuliku teabega, nagu n\u00e4iteks teema m\u00e4\u00e4ratletud vidinaala \u00fcmbrised, ja teiseks teie salvestatud vidina seadistuste v\u00e4\u00e4rtused.<\/p>\n<p>Teie vidina v\u00e4ljund peaks alati algama kajaga <code>$args['before_widget']<\/code>ja l\u00f5ppema kajaga <code>$args['after_widget']<\/code>. See tagab, et teie vidin on \u00fcmbritsetud samade \u00f5igete vidinate HTML-i \u00fcmbristega, nagu on m\u00e4\u00e4ratletud teemaga. Samade radade \u00e4\u00e4res saate vidina pealkirja \u00fcmber kajada <code>$args['before_title']<\/code>ja v\u00e4ljastada \u00f5iged HTML-m\u00e4hised. <code>$args['after_title']<\/code>Meil ei ole tegelikku vidina pealkirja, kuid me muudame ettev\u00f5tte juriidilise nime vidina pealkirjaks.<\/p>\n<p>Vastasel juhul saate oma salvestatud v\u00e4\u00e4rtused k\u00e4tte, viidates teisele argumendile, v\u00f5tmenimede j\u00e4rgi <code>$instance<\/code>, mis on m\u00e4\u00e4ratud <code>form()<\/code>ja <code>update()<\/code>. Hea tava on v\u00e4ljastada ainult m\u00e4\u00e4ratud s\u00e4tted \u2013 ja ignoreerida t\u00fchje.<\/p>\n<p>Kuna me v\u00e4ljastame ka mikroandmeid, peame vastavalt schema.org reegleid lisama vastavad omadused.<\/p>\n<p>See, kuidas soovite oma vidinat v\u00e4ljastada, on t\u00e4ielikult teie otsustada; v\u00f5iksite stiilimise h\u00f5lbustamiseks t\u00f5en\u00e4oliselt kaaluda rohkemate HTML-i \u00fcmbriste lisamist.<\/p>\n<pre><code>\/\/ Responsible for outputting the widget in frontend\npublic function widget($args, $instance) {\n    echo $args['before_widget'];\n\u00a0\n    ?&gt;&lt;div itemscope itemtype=\"https:\/\/schema.org\/LocalBusiness\"&gt;&lt;?php\n\u00a0\n    if (!empty($instance['legal_name'])) {\n        echo $args['before_title'];\n        ?&gt;&lt;span itemprop=\"legalName\"&gt;&lt;?php echo $instance['legal_name']; ?&gt;&lt;\/span&gt;&lt;?php\n\u00a0\n        echo $args['after_title'];\n    }\n\u00a0\n    if (!empty($instance['vat_id'])) {\n        ?&gt;&lt;span itemprop=\"vatID\" class=\"business-vatid\"&gt;&lt;?php printf(__('Vat: %s', 'txtdomain'), $instance['vat_id']); ?&gt;&lt;\/span&gt;&lt;?php\n    }\n\u00a0\n    if (!empty($instance['street_address'])) {\n        ?&gt;&lt;div itemprop=\"address\" itemscope itemtype=\"https:\/\/schema.org\/PostalAddress\" class=\"business-address\"&gt;&lt;?php\n\u00a0\n            ?&gt;&lt;span itemprop=\"streetAddress\"&gt;&lt;?php echo $instance['street_address']; ?&gt;&lt;\/span&gt;&lt;?php\n\u00a0\n            if (!empty($instance['postal_code'])) {\n                ?&gt;&lt;span itemprop=\"postalCode\"&gt;&lt;?php echo $instance['postal_code']; ?&gt;&lt;\/span&gt;&lt;?php\n            }\n            if (!empty($instance['postal_city'])) {\n                ?&gt;&lt;span itemprop=\"addressLocality\"&gt;&lt;?php echo $instance['postal_city']; ?&gt;&lt;\/span&gt;&lt;?php\n            }               \n\u00a0\n        ?&gt;&lt;\/div&gt;&lt;?php\n    }\n\u00a0\n    if (!empty($instance['email_address'])) {\n        ?&gt;&lt;a href=\"mailto:&lt;?php echo $instance['email_address']; ?&gt;\" title=\"&lt;?php _e('Send email', 'txtdomain'); ?&gt;\" class=\"business-email\"&gt;\n            &lt;span itemprop=\"email\"&gt;&lt;?php echo $instance['email_address']; ?&gt;&lt;\/span&gt;\n        &lt;\/a&gt;&lt;?php\n    }\n\u00a0\n    if (!empty($instance['phone_number'])) {\n        ?&gt;&lt;a href=\"tel:&lt;?php echo $instance['phone_number']; ?&gt;\" title=\"&lt;?php _e('Call us', 'txtdomain'); ?&gt;\" class=\"business-phone\"&gt;\n            &lt;span itemprop=\"telephone\"&gt;&lt;?php echo $instance['phone_number']; ?&gt;&lt;\/span&gt;\n        &lt;\/a&gt;&lt;?php\n    }\n\u00a0\n    ?&gt;&lt;\/div&gt;&lt;?php\n\u00a0\n    echo $args['after_widget'];\n}<\/code><\/pre>\n<p>Kohandage v\u00e4ljundit, lisage stiili ja ongi k\u00f5ik!<\/p>\n<p>Teadmiseks: teie vidin saab \u00fcmbrisklassi nime &#8221; <code>widget_&lt;base ID&gt;<\/code>&quot; (baas-ID on see, mille esitasite konstruktoris). Meie puhul saab meie vidin klassi &quot; <code>widget_local_business<\/code>&quot;. See v\u00f5ib aidata teil lisada sihitud stiili.<\/p>\n<h2>Kokkuv\u00f5te ja l\u00f5plik kood<\/h2>\n<p>Selles \u00f5petuses \u00f5ppisime, kuidas luua kohandatud vidinat ja kuidas renderdada selle seadetest mikroandmete vormingus v\u00e4ljundit. Peaksite saama luua oma vidinaid, j\u00e4rgides vidinaklassi p\u00f5hit\u00f5desid!<\/p>\n<p>Viitamiseks siin on t\u00e4ielik kood, k\u00f5ik koos.<\/p>\n<pre><code>add_action('widgets_init', function() {\n    register_widget('LocalBusiness');\n});\n\u00a0\nclass LocalBusiness extends WP_Widget {\n\u00a0\n    \/\/ Initialize your widget in the class constructor\n    public function __construct() {\n        $widget_ops = [\n            'description' =&gt; __('Outputs business information with Microdata', 'txtdomain')\n        ];\n        parent::__construct('local_business', __('Local Business Information', 'txtdomain'), $widget_ops);\n    }\n\u00a0\n    \/\/ Responsible for outputting the widget in frontend\n    public function widget($args, $instance) {\n        echo $args['before_widget'];\n\u00a0\n        ?&gt;&lt;div itemscope itemtype=\"https:\/\/schema.org\/LocalBusiness\"&gt;&lt;?php\n\u00a0\n        if (!empty($instance['legal_name'])) {\n            echo $args['before_title'];\n            ?&gt;&lt;span itemprop=\"legalName\"&gt;&lt;?php echo $instance['legal_name']; ?&gt;&lt;\/span&gt;&lt;?php\n\u00a0\n            echo $args['after_title'];\n        }\n\u00a0\n        if (!empty($instance['vat_id'])) {\n            ?&gt;&lt;span itemprop=\"vatID\" class=\"business-vatid\"&gt;&lt;?php printf(__('Vat: %s', 'txtdomain'), $instance['vat_id']); ?&gt;&lt;\/span&gt;&lt;?php\n        }\n\u00a0\n        if (!empty($instance['street_address'])) {\n            ?&gt;&lt;div itemprop=\"address\" itemscope itemtype=\"https:\/\/schema.org\/PostalAddress\" class=\"business-address\"&gt;&lt;?php\n\u00a0\n                ?&gt;&lt;span itemprop=\"streetAddress\"&gt;&lt;?php echo $instance['street_address']; ?&gt;&lt;\/span&gt;&lt;?php\n\u00a0\n                if (!empty($instance['postal_code'])) {\n                    ?&gt;&lt;span itemprop=\"postalCode\"&gt;&lt;?php echo $instance['postal_code']; ?&gt;&lt;\/span&gt;&lt;?php\n                }\n                if (!empty($instance['postal_city'])) {\n                    ?&gt;&lt;span itemprop=\"addressLocality\"&gt;&lt;?php echo $instance['postal_city']; ?&gt;&lt;\/span&gt;&lt;?php\n                }               \n\u00a0\n            ?&gt;&lt;\/div&gt;&lt;?php\n        }\n\u00a0\n        if (!empty($instance['email_address'])) {\n            ?&gt;&lt;a href=\"mailto:&lt;?php echo $instance['email_address']; ?&gt;\" title=\"&lt;?php _e('Send email', 'txtdomain'); ?&gt;\" class=\"business-email\"&gt;\n                &lt;span itemprop=\"email\"&gt;&lt;?php echo $instance['email_address']; ?&gt;&lt;\/span&gt;\n            &lt;\/a&gt;&lt;?php\n        }\n\u00a0\n        if (!empty($instance['phone_number'])) {\n            ?&gt;&lt;a href=\"tel:&lt;?php echo $instance['phone_number']; ?&gt;\" title=\"&lt;?php _e('Call us', 'txtdomain'); ?&gt;\" class=\"business-phone\"&gt;\n                &lt;span itemprop=\"telephone\"&gt;&lt;?php echo $instance['phone_number']; ?&gt;&lt;\/span&gt;\n            &lt;\/a&gt;&lt;?php\n        }\n        ?&gt;&lt;\/div&gt;&lt;?php\n\u00a0\n        echo $args['after_widget'];\n    }\n\u00a0\n    \/\/ Responsible for outputting the widget settings in admin\n    public function form($instance) { \n        ?&gt;\n        &lt;p&gt;\n            &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('legal_name'); ?&gt;\"&gt;&lt;?php _e('Legal name:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('legal_name')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('legal_name')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['legal_name']); ?&gt;\" \/&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('vat_id'); ?&gt;\"&gt;&lt;?php _e('Vat ID\/Organization number:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('vat_id')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('vat_id')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['vat_id']); ?&gt;\" \/&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('street_address'); ?&gt;\"&gt;&lt;?php _e('Street address:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('street_address')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('street_address')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['street_address']); ?&gt;\" \/&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('postal_code'); ?&gt;\"&gt;&lt;?php _e('Postal code:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('postal_code')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('postal_code')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['postal_code']); ?&gt;\" \/&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('postal_city'); ?&gt;\"&gt;&lt;?php _e('City:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('postal_city')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('postal_city')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['postal_city']); ?&gt;\" \/&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('email_address'); ?&gt;\"&gt;&lt;?php _e('E-mail address:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('email_address')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('email_address')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['email_address']); ?&gt;\" \/&gt;\n        &lt;\/p&gt;\n        &lt;p&gt;\n            &lt;label for=\"&lt;?php echo $this-&gt;get_field_id('phone_number'); ?&gt;\"&gt;&lt;?php _e('Phone number:', 'txtdomain'); ?&gt;&lt;\/label&gt;\n            &lt;input type=\"text\" class=\"widefat\" id=\"&lt;?php echo esc_attr($this-&gt;get_field_id('phone_number')); ?&gt;\" name=\"&lt;?php echo esc_attr($this-&gt;get_field_name('phone_number')); ?&gt;\" value=\"&lt;?php echo esc_attr($instance['phone_number']); ?&gt;\" \/&gt;\n        &lt;\/p&gt;\n        &lt;?php\n    }\n\u00a0\n    \/\/ Responsible for saving settings in admin\n    public function update($new_instance, $old_instance) {\n        $instance = [];\n        $instance['legal_name'] = (!empty($new_instance['legal_name']))? strip_tags($new_instance['legal_name']): '';\n        $instance['vat_id'] = (!empty($new_instance['vat_id']))? strip_tags($new_instance['vat_id']): '';\n        $instance['street_address'] = (!empty($new_instance['street_address']))? strip_tags($new_instance['street_address']): '';\n        $instance['postal_code'] = (!empty($new_instance['postal_code']))? strip_tags($new_instance['postal_code']): '';\n        $instance['postal_city'] = (!empty($new_instance['postal_city']))? strip_tags($new_instance['postal_city']): '';\n        $instance['email_address'] = (!empty($new_instance['email_address']))? strip_tags($new_instance['email_address']): '';\n        $instance['phone_number'] = (!empty($new_instance['phone_number']))? strip_tags($new_instance['phone_number']): '';\n        return $instance;\n    }\n}<\/code><\/pre>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selles \u00f5petuses kirjeldatakse, kuidas luua kohandatud vidinat, mis v\u00e4ljastab ettev\u00f5tteteavet koos mikroandmete skeemi m\u00e4rgistusega LocalBusinessi jaoks.<\/p>\n","protected":false},"author":1,"featured_media":223853,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,981,894,718,981,994,833,894,1110,842,833,1005,1005,994,926,926,842,863,863],"tags":[1165],"class_list":["post-233810","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-aeri-et","category-kood","category-sisuturundus","category-juhend-algajatele","category-n-a","category-opetused","category-seo-5","category-teemasid","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=233810"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223853"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}