Supporto » Sviluppare con WordPress » domanda elementare, aggiungere stringhe in array
domanda elementare, aggiungere stringhe in array
-
alle prime armi, sto studiando una piccola funzione
$types = array("post", "page", "company", "portfolio", "events"); $status = "draft";
come posso aggiungere “nuovi utenti” (users) al primo array e fare in modo che il secondo diventi un array, sul quale posso aggiungere “pending” e “published”?
-
Ciao @arsenalemusica,
non ho ben capito la domanda, potresti darci qualche dettaglio in più?
Nel frattempo provo a rispondere. In PHP per aggiungere un nuovo elemento in un array puoi utilizzare la funzione
array_push()
in questo modo:array_push($types, "nuovo elemento");
Non so il contesto, ma se hai la possibilità di cambiare la definizione della variabile $status, scriverei direttamente qualcosa del genere:
$status = array("draft", "pending", "published");
Spero di essere stato d’aiuto,
Thomas
Grazie per la info. Sto utilizzando una funzione per far comparire le notification bubbles nel menu admin:
function show_pending_bubble_number($menu) { $types = array("post", "page", "claim_listing", "company", "portfolio", "events", "deals", "blog"); $status = "draft"; foreach($types as $type) { $num_posts = wp_count_posts($type, 'readable'); $pending_count = 0; if (!empty($num_posts->$status)) $pending_count = $num_posts->$status; if ($type == 'post') { $menu_str = 'edit.php'; } else { $menu_str = 'edit.php?post_type=' . $type; } foreach( $menu as $menu_key => $menu_data ) { if( $menu_str != $menu_data[2] ) continue; $menu[$menu_key][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>'; } } return $menu; } add_filter('add_menu_classes', 'show_pending_bubble_number');
Praticamente, vorrei che le notifiche $types mi arrivino non solo ogni volta che viene creato un CPT (post, portfolio, etc.) ma anche ogni volta che un nuovo utente si registra.
E poi ho bisogno che, dei suddetti, il sistema mi avverta non solo per uno $status in draft, ma anche in pending/published.
Mi sembra che il tuo suggerimento vada nella giusta direzione. Adesso lo provo ed eventualmente chiudo questo thread.no, il suggerimento di Thomas non sembra funzionare….
questo post non è “risolto”
Guardando la funzione ho capito un po’ meglio la situazione.
Per quanto riguarda lo $status, potresti sostituire
$status = "draft";
con
$status_array = array("draft", "published", "pending");
Dopodiché all’interno della funzione bisogna adattare un po’ il codice sostituendo
$pending_count = 0; if (!empty($num_posts->$status)) $pending_count = $num_posts->$status;
con
$pending_count = 0; foreach($status_array as $status) { if (!empty($num_posts->$status)) $pending_count += $num_posts->$status; }
In questo modo si avrà la notifica con il numero totale di post draft, pending o published.
Per gestire le notifiche relative agli utenti, invece, la situazione è più complicata. Mi viene in mente una soluzione, provo a schematizzarla (ipotizzo di fare tutto queste cose all’interno di un plugin):
– definisco un nuovo campo nel DB e una nuova variabile che contenga il numero di nuovi utenti registrati dall’ultima volta che si è fatto l’accesso alla bacheca di WP.
– definisco una funzione che incrementi tale variabile ogni volta che un utente viene creato.
– aggancio tale funzione all’hook user_register oppure ricorro alla funzione wp_new_user_notification() e la scrivo direttamente all’interno.
– nella tua funzioneshow_pending_bubble_number($menu)
, dopo il bloccoforeach($types as $type)
, aggiungo:`$menu_str = ‘users.php’;
foreach( $menu as $menu_key => $menu_data ) {
if( $menu_str == $menu_data[2] )
$menu[$menu_key][0] .= ” <span class=’update-plugins count-$pending_count’><span class=’plugin-count’>” . number_format_i18n($new_user_count) . ‘</span></span>’;
}`dove
$new_user_count
è il valore contenuto nella variabile definita all’inizio e contenente il numero di nuovi utenti registrati.– dopo questa funzione resetto
$new_user_count
nel db.Tutta questa complessità deriva dal fatto che WordPress non memorizza lo stato degli utenti appena registrati come accade per i post in bozza o pubblicati, perché non esiste proprio uno stato relativo a quello.
Spero di averti fornito qualche spunto utile per progettare la tua soluzione e risolvere il problema.
Thomas
[c’è un problema con WP forum, ho letto la tua risposta per email ma qui non compare]
Dunque non è il mio tema che manca di qualche funzione, ma proprio WP che non permette notifiche sugli utenti. Le tue informazioni sono molto utili, ti confermo che la prima parte relativa a $status funziona bene. Adesso mi devo studiare la seconda parte, ed eventualmente pubblicherò qui la soluzione.Risolto il problema con la risposta, spero ti sia d’aiuto!
- Il topic ‘domanda elementare, aggiungere stringhe in array’ è chiuso a nuove risposte.