Selectarea categoriilor cu ajutorul Carbon Fields

Despre Carbon Fields am scris atât pe blogul personal, cât și pe forum și am tot început să-l folosesc la diverse proiecte, având tot felul de provocări, care mai de care mai interesantă. Ultima? Să pot permite selectarea unei singure categorii pentru un anumit post. Soluția e foarte simplă și are câțiva pași simpli. Evident, în loc de category se poate folosi și o taxonomie proprie.

<?php

use \Carbon_Fields\Container;
use \Carbon_Fields\Field;

add_action('after_setup_theme', function () {
  // inițializăm Carbon Fields
  \Carbon_Fields\Carbon_Fields::boot();
});

function getCurrentValue()
{
  if (!is_admin()) {
    // pentru că toate câmpurile sunt parsate și în frontend, nu facem interogările decât în admin
    return [];
  }

  $currentPostID = absint($_GET['post'] ?? 0);

  $mediumTerm = wp_list_pluck((array) get_the_terms($currentPostID, 'category'), 'term_id');
  
  // în cazul în care postul are deja mai multe categorii setate, o întoarcem doar pe prima
  return array_shift($mediumTerm);
}

function getAvailableOptions()
{
  if (!is_admin()) {
    return [];
  }
  $terms = get_terms([
    'taxonomy' => 'category',
    'hide_empty' => false,
  ]);

  $parsedTerms[-1] = __('Select');

  foreach ($terms as $term) {
    // generăm un array de forma "id" => "Nume", pentru a-l putea afișa în select 
    $parsedTerms[$term->term_id] = $term->name;
  }

  return $parsedTerms;
}

add_action('carbon_fields_register_fields', function () {
  Container::make('post_meta', __('My Category'))
    ->where('post_type', '=', 'post')
    ->add_fields([
      Field::make('select', 'my_category', __('Category'))
        ->add_options(getAvailableOptions())
        ->set_required(true),
    ]);
});


add_action('carbon_fields_post_meta_container_saved', function ($postID) {
  $term = absint(carbon_get_the_post_meta('my_category'));
 

  if (!empty($term)) {
    wp_set_post_terms($postID, [$term], 'category', false);
    // https://developer.wordpress.org/reference/functions/wp_set_post_terms/
    // salvăm toată povestea
    // al patrulea argument, `false` poate fi setat ca `true` dacă se dorește 
    // adăugarea mai multor categorii
  }
});


add_filter('register_taxonomy_args', function ($args, $taxonomy) {
  if ($taxonomy === 'category') {
    // ascundem selectorul de categorie
    $args['meta_box_cb'] = false;
  }
  return $args;
}, 10, 3);

Cum configurezi eficient Windows pentru PHP Dev?

Mi se întâmplă deseori să constat lipsa –  pe sistemele unor programatori – a unor  utilitarele mici, inspirate sau portate din lumea Linux. Prin urmare, m-am gândit să încerc să fac un mic ghid despre ce și cum ar trebui instalat.

Plec de la premisa că este și NodeJS instalat iar XAMPP este Stack-ul folosit, dar se poate aplica în orice alt context; scopul este acela de a avea toate utilitarele disponibile în cmd (hint: încearcă cmder)

1. Rapid Environment Editor

Complet opțional, dar foarte la îndemână, util în editarea/adăugarea variabilelor. Sigur, te poți descurca și prin alte metode, dar REE este atât de eficient încât nici nu merită să iau în considerare alte explicații 😀

2. Gow

Este o colecție de utilitare, de genul whereis, wget, curl, grep, tar șamd. În total sunt peste o sută de astfel de programe.

3. GnuWin

Similar cu Gow, dar ultima actualizare a fost în 2009. Eu le am pe amândouă doar pentru că pe ăsta l-am găsit primul și mi-a fost prea lene să le compar 😀

4. Git

Instalat astfel încât Git va fi disponibil direct din cmd. Adică la instalare alegi ultima opțiune:


După ce instalăm tot ce am listat mai sus, deschidem REE și avem grijă ca în PATH să existe directoarele unde au fost instalate utilitarele astea:

Săgețile albastre sunt legate de contul curent din Windows și poate fi aflat prin apăsarea Win+R -> %appData%\npm respectiv %appData\Composer.

Pe lângă utilitarele înșirate mai sus, recomand să adaugi și directoarele bin  de la Apache sau Mysql, respectiv directorul în care se află executabilul php.exe (e.g. c:\xampp\php)

După ce ai adăugat toate variabilele astea în editor, salvezi și dai un restart (unii zic că logout ar fi suficient). Imediat după, dacă deschizi cmd vei avea la dispoziție o mulțime de utilitare, care mai de care mai… utile.

Folosești Composer în tema ta WordPress? Evită erorile la instalare!

De fiecare dată când folosesc Composer într-o temă sau într-un plugin încerc să am grijă de momentul în care trebuie să pornesc de la zero cu respectiva temă (sau plugin).

Cum folderul vendor este ignorat de Git, sunt șanse destul de mari ca tot codul meu să rezulte într-un minunat ecran alb (dacă erorile sunt oprite).

Codul de mai jos încearcă să prevină problema asta, verificând existența autoload.php.

function themeReqirementsWarning_ihdqnrwrbd()
{
	$message = __("Some files are missing from the dependencies list. Please make sure you've ran <code>composer update</code>!", 'felder');
	printf('<div class="error"><p>%s</p></div>', $message);
}

if (!file_exists(get_template_directory() . '/vendor/autoload.php')) {
	add_action('admin_notices', 'themeReqirementsWarning_ihdqnrwrbd');

	add_action('after_switch_theme', function () {
		switch_theme(WP_DEFAULT_THEME, WP_DEFAULT_THEME);
		unset($_GET['activated']);
		add_action('admin_notices', 'themeReqirementsWarning_ihdqnrwrbd');
	});
	return;
}

require_once dirname(__FILE__) . "/vendor/autoload.php";

Conferința Apple WWDC 2017

Mâine începe evenimentul Apple WWDC. Va putea fi urmărit live aici de mâine, începând cu ora 20:00, de pe Safari sau Edge. Desigur, îl vom comenta și pe DevForum!

Ce ar trebui să așteptăm?

Speculații despre noutăți au tot început să apară de câteva luni: actualizări la mac book-uri (CPU mai nou), un nou iPad pro (ramă mai subtire, ecran mai bun) și Siri Speaker – alternativă la Amazon Alexa sau Google Home.

Ce se va anunța la modul sigur: iOS 11 și o nouă versiune de macOS. Despre iOS se speculează că va avea o interfață ușor redesenată și că va renunța la suportul pentru 32bit. Despre macOS se speculează că va trece (sau că va permite trecerea)  la APFS – un file-system nou, deja folosit pe iOS de câteva luni.

Live blog

  • cel mai mare wwdc ever. Se trece de laudele obișnuite pentru că „sunt multe lucruri de discutat”. tvOS, watchOS, macOS și iOS.
  • High Sierra este numele noului macOS
  • Safari este cel mai rapid browser (dar, pe de altă parte, și Edge este cel mai rapid atunci când e prezentat de Microsoft 😀 )
    • Intelligent tracking prevention
    • disabled autoplay pentru filme/audio
  • Mail
    • split screen
    • căutarea folosește spotlight
  • Photos
    • detectarea fețelor e îmbunătățită;
    • îmbunătățiri pentru prelucrarea pozelor
  • APFS este noul system file, folosit implicit de acum înainte. Mai rapid, mai sigur, mai nou.
  • Disponibil în developer beta de azi, public beta spre sfârșitul lunii, lansarea în toamnă;
  • actualizare iMac:
    • panel-uri cu 40% mai luminoase
    • Intel Kaby Lake
    • actualizări la ecrane și la plăcile video;
    • se dublează capacitatea maximă a memoriei: max 32Gb pentru iMac-urile de 21 și maximum 64Gb pentru cele de 27
  • Și mac book-urile primesc actualizare la Kaby Lake

Din toamnă se lansează… iMac Pro ?!

  • ecran 5k;
  • The most powerful mac ever; (deci nu mai vedem mac pro?)
  • 8/10/18 cores Xeon;
  • Plăci video Radeon Vega (max 16gb ram) până la 22 teraflops;
  • Până la 128Gb RAM;
  • 10Gb ethernet;
  • Prețul pleacă de la 5000$, disponibil din decembrie.

iOS

  • Messages
    • mesajele sunt sincronizate între dispozitive;
  • Apple Pay va permite plata între utilizatori.
  • Siri:
    • o exprimare mai clară
    • traducere din engleză în câteva limbi;
  • Camera/Photos
    • un nou format pentru imagini ce promite compresie 2x;
    • Timpi de expunere custom?

  • Maps afișează hărțile din Mall-uri și Aeroporturi
  • App Store
    • Poți face phased deploy la aplicatii, astfel încât, la lansare, să nu îți crape serverele;
    • Redesign pentru app store;
  • API-uri pentru face tracking, face detection etc. Core Machine Learning
  • API pentru augmented reality.

iPad pro

  • Ecran de 10.4 inch la 120Hz, dar e dinamic, în funcție de conținutul afișat;

  • Pencil are un delay de doar 20ms;
  • procesor A10X, 30% mai rapid decât modelul anterior;

  • Un nou dock

Pictograme inteligente în WordPress

S-a întâmplat de câteva ori să am nevoie de afișarea rapidă a unor pictograme (icons) ori într-un post ori într-un comentariu WordPress. Pentru că <img src... este prea mult și potențial inconsistent, am făcut ce face orice om normal: un plugin. Mă rog… plugin 🙂

Parsăm the_content și get_comment_text și căutăm un pattern de forma icon:nume, apoi îl înlocuim cu ce avem nevoie. În cazul de față, svg-uri. Continuă să citești Pictograme inteligente în WordPress

Animații web native în context geo-spațial

Mai jos o definiție clasică:

HÁRTĂ, hărți, s. f. Reprezentare grafică în plan orizontal a suprafeței pământului (totală sau parțială), generalizată și micșorată conform unei anumite scări de proporție și întocmită pe baza unei proiecții cartografice. [dexonline.ro]

, urmată de o descriere personală al aceluiași subiect:

HÁRTĂ, hărți, s. f. Mod grafic de a combina și reprezenta dinamic, pe un substrat geo-spațial, seturi de date, povești și sentimente.

Profitând de creșterea puterii de procesare a masinilor de calcul, hărțile au evoluat dând naștere GIS-ului. Acesta este un nou mediu de prezentare a datelor ce a schimbat complet modul în care vedem și interacționăm cu spațiul înconjurător.

Hărțile au devenit deci la fel de accesibile și versatile ca Internetul, dar au moștenit și multe dintre defectele acestuia. Web-ul este un mediu dinamic, colorat și interactiv iar hărțile noastre pot fi la fel! Doar că fiecare funcționalitate costă (mai ales în mediul mobil): consumul de date este limitat de costuri iar funcționalitățile sunt sugrumate de resursele hardware. Cu alte cuvinte trebuie să fim cumpătați. Continuă să citești Animații web native în context geo-spațial

Ce e nou în Windows Fall Creator Update 2017?

Zilele acestea are loc Microsoft Build 2017, întâlnirea anuală în care își laudă realizările și unde sunt prezentate planurile de viitor. Azi, în cea de-a doua zi, au fost prezentate unele lucruri interesante despre următoarea actualizare a Windows, numită – foarte original! – Fall Creator Update.  Cel mai probabil, această actualizare va veni prin septembrie. Haideți să vedem noutățile promise!

Bash on Windows

Unul dintre feature-urile care a beneficiat de cel mai mare tam-tam este reprezentat de posibilitatea de a rula Ubuntu în Windows. Inițial era destul de limitat, dar a devenit mai potent cu ultima actualizare. Încă nu este o distribuție în adevăratul sens al cuvântului, dar se laudă a fi destul de potentă pentru multe activități. Continuă să citești Ce e nou în Windows Fall Creator Update 2017?

Scrie pe blogul DevForum!

Da, observ ironia din nume, dar câțiva utilizatori și-au exprimat interesul de a scrie diverse articole, iar forumul nu este chiar potrivit pentru asta.

Excerpt-ul articolelor va putea fi publicat și pe DevForum, iar discuțiile ulterioare se vor purta pe forum. Te poți autentifica aici și vei avea drepturile unui contribuitor (i.e. poți trimite articole spre aprobare).

Nu toate articolele de pe blog vor publicate pe forum, astfel încât vom putea avea știri pe blog fără să aglomerăm inutil forumul.

Sunt binevenite orice articole pe teme tehnice – indiferent că-s software sau hardware – tutoriale, reviews șamd.

Elon Musk Just Gave Some Brilliant Career Advice. Here It Is in 1 Sentence

People are mistaken when they think that technology just automatically improves. It does not automatically improve. It only improves if a lot of people work very hard to make it better, and actually it will, I think, by itself degrade, actually.

You look at great civilizations like Ancient Egypt, and they were able to make the pyramids, and they forgot how to do that. And then the Romans, they built these incredible aqueducts. They forgot how to do it.

https://www.inc.com/justin-bariso/elon-musk-just-gave-some-brilliant-career-advice-here-it-is-in-1-sentence.html