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

    wordpress hook add_meta_box

    Ciao a tutti,
    ho appena iniziato a "lavorare seriamente" con wordpress e mi sono subito scontrata con l'uso degli hook.

    La mia esigenza è quella di inserire un campo select per uno specifico page_template.
    In particolare se il template della pagina è "Categoria Prodotto" allora mostro il campo meta con la select della categoria.

    Questo è il codice realizzato sin ora:

    codice:
    <?php
    add_action('load-post.php', 'select_categoria_setup');
    add_action('load-post-new.php', 'select_categoria_setup');
    
    function select_categoria_setup() {
        add_action('add_meta_boxes', 'select_categoria');
    }
    
    function select_categoria() {
    if(get_post_meta( get_the_ID(), '_wp_page_template', TRUE ) == 'categoria.php'){
    add_meta_box(
                'id_categoria', // Unique ID
                'Title Hook', // Title
                'select_categoria_data', // Callback function
                'page', // Admin page (or post type)
                'side', // Context
                'default'     // Priority
        );
    }
    }
    
    function select_categoria_data() {
            /*OUTPUT DELLA SELECT*/
    }
    ?>
    1° PROBLEMA - NUOVA PAGINA: anche dopo aver selezionato il template "Categoria Prodotto" il meta box non viene visualizzato finché non si salva/pubblica la pagina.
    Devo inserire una add_action particolare?

    2° PROBLEMA - JQUERY: volendo risolvere il problema sopra con jQuery inserendo un bind sulla selezione del template che mostra il meta box (inizialmente nascosto), come faccio ad aggiungere lato wp-admin un mio file js? (idem anche per un eventuale css)

    3° PROBLEMA - REQUIRED: Come faccio ad impostare tale meta box come un campo obbligatorio nel caso in cui il template sia "Categoria Prodotto"? C'è una qualche impostazione particolare o devo risolvere mediante jQuery?

    I dubbi in realtà sono molti altri ... per ora mi fermo qui!

    Grazie a chiunque abbia voglia di darmi una mano a capirci qualcosa in più

  2. #2
    Per ora ho risolto così:

    Nella funzione "select_categoria" ho tolto la condizione
    codice:
    if(get_post_meta( get_the_ID(), '_wp_page_template', TRUE ) == 'categoria.php')
    in questo modo il box è sempre presente in ogni pagina ma nascosto di default (vedere css e jquery sotto)

    codice:
    function select_categoria_data() {
            ?>
        <style>#id_categoria{display:none}</style>
            <?php
            //COSTRUISCO LA SELECT
            ?>
            <script type="text/javascript">
                jQuery(document).ready(function() {
                    var template = jQuery('#page_template :selected').val();
                    if(template == 'categoria.php')
                      jQuery('#id_categoria').show();
                    
                    jQuery('#page_template').bind('change', function (){
                        var template = jQuery('#page_template :selected').val();
                        if(template == 'categoria.php')
                            jQuery('#id_categoria').show();
                        else
                            jQuery('#id_categoria').hide(); 
                    });
                });
            </script>
            <?php
    }
    Ovviamente se qualcuno conosce il modo "giusto" per ottenere questo risultato mi faccia sapere!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.