Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Scrivere due funzioni come do_action e add_action di wordpress

    Ciao a tutti,
    mi servirebbe scrivere due funzioni che hanno le stesse mansioni di do_action e add_action di wordpress. Sono andato nel codice di wordpress e di do_action ci ho capito poco, mentre add_action, a mia sorpresa, non fa nient altro che richiamare add_filter e poi da li in poi mi perdo.

    Penso che alla base ci sia un array che gestisca le priorita' delle varie azioni aggiunte.
    Non capisco pero il concetto di passare come argomento, in add_action, una stringa di testo che rappresenta la funzione che verra' eseguita da do_action.

    Boh... ce' un po' di confusione,

    grazie!

  2. #2
    aspetta che mi studio wordpress per risponderti..
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Quote Originariamente inviata da zoc Visualizza il messaggio
    ...
    Boh... ce' un po' di confusione
    ...
    In realtà in molti CMS (per esempio anche in Drupal) da qualche parte si passa la funzione da eseguire come stringa e poi c'è un'altra funzione che si occupa di eseguire la funzione richiesta, non c'è nessuna confusione, semplicemente per capire come funziona ti devi studiare il framework che c'è sotto.
    Se impari a creare plugin per Wordpress vedrai che ti sarà chiaro cosa sta succedendo, ma guardando il codice senza sapere nulla del framework ti sembra solo un casino.
    Io per WP non ho mai scritto niente, quindi non ho la minima idea di cosa facciano o come siano fatte le funzioni da te indicate, ma se sei un po' pratico di PHP prova ad imparare il framework andando sulla sezione developers del sito WP.

  4. #4
    Ciao ragazzi,

    e grazie per l'aiuto, ma in verita' di plugin e temi custom di WP ne ho scritti molti.
    Ma in questa circostanza, visto che sto fuori dall'ambiente WP mi era nuovo il concetto di creare un sistema che fosse simile a quello WP.
    Comunque la risposta era piu' semplice di quanto pensassi, eccola:

    http://php.net/manual/en/language.types.callable.php

  5. #5
    mi sa che è più un factory-pattern scritto con funzioni?

    ma senza vedere i codici aug
    Questa volta, più che un voto.. è favoreggiamento.

  6. #6
    Ecco fatto... forse meglio gestirlo con una classe statica, ma per dare l'idea mi va bene:

    Codice PHP:

    <?php

    $hooks 
    = array();

    function 
    do_action$hook ){
        
        global 
    $hooks;
        
        
    $todo $hooks[$hook];
        
        
    usort($todo,"cmp");
        
        foreach ( 
    $todo as $val ){
            
            
    call_user_func$val['function'] );
            
        }    
        
    }


    function 
    add_action$hook$func$priority 10 ){
        
        global 
    $hooks;
        
        
    $hooks[$hook][] = array( 
            
    'function' => $func,
            
    'priority' => $priority 
        
    );
        
    }


    function 
    cmp($a$b) {

        return 
    $a['priority'] - $b['priority'];
        
    }

    function 
    func1(){ echo 'Sono func1 <br>'; }
    function 
    func2(){ echo 'Sono func2 <br>'; }

    add_action('start','func1'9);
    add_action('end','func2'10);
    add_action('start','func1');

    ?>

    PARTE IL TEST:
    1
    2
    3
    4
    <?php do_action'start' ); ?>
    5
    6
    7
    8
    <?php do_action'end' ); ?>
    9
    10
    TEST FINITO


    <?php


    echo '<pre>';
    print_r($hooks);
    echo 
    '</pre>';


    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.