Visualizzazione risultati 1 fino 7 di 7

Discussione: inviare the_title() in una mail tramite form html/php

  1. #1
    Guest

    Predefinito inviare the_title() in una mail tramite form html/php

    Il mio problema è questo: ho un form su un sito wordpress i cui dati vengono inviati per email, funziona tutto bene, ma vorrei includere the_title() o ancor meglio il titolo di un singolo portfolio nel testo dell'email o come oggetto.. Questo è il form:


    Codice:
    /**************************************
    		Contact Form
    **************************************/
    if ( ! function_exists( 'be_contact_form' ) ) {
    	function be_contact_form($atts,$content) {
    		extract( shortcode_atts( array (
    			'input_bg_color' => '',
    			'input_color' => '',
    		    'input_border_color' => '',
    		    'button_bg_color' => '',
    		    'button_color' => ''
    	    ), $atts ) );
    		$output = '';
    		$styles = $button_styles = 'style="';
    		if( isset( $input_bg_color ) && !empty( $input_bg_color) ) {
    			$styles .= 'background-color: '.$input_bg_color.';';
    		}
    		if( isset( $input_color ) && !empty( $input_color) ) {
    			$styles .= 'color: '.$input_color.';';
    		}
    		if( isset( $input_border_color ) && !empty( $input_border_color) ) {
    			$styles .= 'border-color: '.$input_border_color.';';
    		}
    		if( isset( $button_bg_color ) && !empty( $button_bg_color) ) {
    			$button_styles .= 'background-color: '.$button_bg_color.' !important;';
    		}
    		if( isset( $button_color ) && !empty( $button_color) ) {
    			$button_styles .= 'color: '.$button_color.' !important;';
    		}
    		$styles .= '"';
    		$button_styles .= '"';
    		$output .= '<div class="contact_form contact_form_module">
    						<form method="post" class="contact">
                            <table>
                            	<tr>
                                	<td>
    							<fieldset class="contact_fieldset">
    								<input type="text" name="contact_name" class="txt autoclear" placeholder="'.__('*Nome e Cognome:','be-themes').'" '.$styles.' />
    							</fieldset></td>
                                <td>
    							<fieldset class="contact_fieldset">
    								<input type="text" name="contact_email" class="txt autoclear" placeholder="'.__('*Email:','be-themes').'" '.$styles.' />
    							</fieldset></td></tr>
                                <tr>
                                	<td>
    							<fieldset class="contact_fieldset">
    								<input type="text" name="contact_tel" class="txt autoclear" placeholder="'.__('Telefono:','be-themes').'" '.$styles.' />
    							</fieldset></td>
                                <td>
                                <fieldset class="contact_address">
    								<input type="text" name="contact_subject" class="txt autoclear" placeholder="'.__('Indirizzo:','be-themes').'" '.$styles.' />
    							</fieldset></td></tr>
                                <tr>
                                	<td colspan="2">
    							<fieldset class="contact_fieldset">
    								<input style="width:99%;" type="text" name="contact_comment" class="txt autoclear" placeholder="'.__('*Richiesta:','be-themes').'" '.$styles.' />
    							</fieldset></td></tr>
                                <tr>
    							<td colspan="2">
                                <fieldset class="contact_fieldset">
    								<input style="min-width:30px;" checked="checked" id="checkbox" type="checkbox" name="checkbox" value="yes" />
                                <label for="checkbox">Si, acconsento al trattamento dei miei dati personali secondo l&rsquo;<a id="linkprivacy" href="http://www.silviaalessandri.it/informativa-privacy/">informativa sulla Privacy</a></label>
    							</fieldset></td></tr>
    							<tr>
                                	<td colspan="2" style="text-align:center;">
    							<fieldset class="contact_fieldset submit-fieldset">
    								<input style="min-width: 150px;border: 1px solid #000;float: right;color: #000;font-weight: bold;font-size: 15px;}" type="submit" name="contact_submit" value="'.__('Invio','be-themes').'" class="contact_submit" '.$button_styles.' />
    								<div class="contact_loader"></div>
    							</fieldset>
    							</td></tr>
    							<div class="contact_status be-notification"></div>
    							</table>
                            </form>
    					</div>';
    		return $output; 
    	}
    	add_shortcode('contact_form','be_contact_form');
    }


    E questo è il controllo:
    Codice:
    /* ---------------------------------------------  */
    // Function for processing contact form submission
    /* ---------------------------------------------  */
    add_action( 'wp_ajax_nopriv_contact_authentication', 'be_themes_contact_authentication' );
    add_action( 'wp_ajax_contact_authentication', 'be_themes_contact_authentication' );
    function be_themes_contact_authentication() {
    	global $be_themes_data;
    	extract($_POST);
    	if(empty($contact_name) || empty($contact_email) || empty($contact_comment) || empty($contact_subject) ) {
    		$result['status']="error";
    		$result['data']= __('Attenzione, tutti i campi sono obbligatori','be-themes');
    	}
    	else if(!preg_match ('/^[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}$/', $contact_email)) {
    		$result['status']="error";
    		$result['data']=__('Inserire un indirizzo email valido','be-themes');
    	}
    	else if(!empty($contact_name) && !empty($contact_email) && !empty($contact_comment) && !empty($contact_subject) ) {
    		if ( !empty( $be_themes_data['mail_id'] ) ) {
    			$to = $be_themes_data['mail_id'];
    		} else {
    			$to = get_option('admin_email');
    		}
    		$message= "Questa email ti è stata inviata da " . $_POST['contact_name'] . ", " . $_POST['contact_subject'] . " " . $_POST['contact_tel'] . ". MESSAGGIO: " . $_POST['contact_comment'];		
    		$subject= $contact_name;
    		$from = $contact_email;
    		$headers = "From:" . $from;
    		mail($to, $subject, $message, $headers);
    		$result['status']="success";
    		$result['data']=__('Il tuo messaggio è stato inviato con successo!
    		 Ti ricontatteremo al più presto.','be-themes');
    	}
    	header('Content-type: application/json');
    	echo json_encode($result);
    	die();
    }
    Qualcuno può aiutarmi? grazie dell'attenzione :)

  2. #2
    Guest

    Predefinito

    se ad esempio cambio
    $subject= $contact_name;
    con
    $subject= the_title();
    oppure
    $subject= get_the_title();

    mi restituisce l'oggetto della mail vuoto...

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Il form credo che si trovi in una pagina "dedicata" e non sotto ogni articolo interessato giusto?
    Perchè se così fosse la funzione get_the_title() (che tra le due postate è quella corretta per il tuo scopo) trovandosi in una pagina non mostra il titolo dell'articolo.
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    Ciao e grazie della risposta... praticamente ho un unico contact form, che viene richiamato dinamicamente all'interno delle pagine.. mi serve che nella mail che arriva all'admin ci sia come oggetto il titolo della pagina in cui si trova il form...

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Nelle pagine viene incluso il form ma non la pagina PHP. Quella resta indipendente giusto? In questo caso l'errore è ovvio.

    Fai così. Nel form html (quindi nel primo codice) nascondici questo:

    Codice PHP:
    <input type="hidden" name="titolo_articolo" value="<?php echo get_the_title(); ?>">
    E cambia questo codice:

    Codice PHP:
    $subject= $contact_name;
    $from = $contact_email;
    $headers = "From:" . $from;
    mail($to, $subject, $message, $headers);
    $result['status']="success";
    Con questo:

    Codice PHP:
    $subject= htmlspecialchars($_POST['titolo_articolo']);
    $from = $contact_email;
    $headers = "From: {$contact_name} <" . $contact_email.">";
    mail($to, $subject, $message, $headers);
    $result['status']="success";
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    Ciao, ho provato a fare come hai detto tu ma nell'oggetto della mail mi arriva questo: &lt;?php echo get_the_title(); ?&gt;
    ho provato a riprendere il linguaggio php non con <?php ?> ma bensì con le virgolette, scrivendo questo: <input type="hidden" name="titolo_articolo" value=" ' echo get_the_title();' " />
    ma dreamweaver mi dice che c'è un errore di sintassi e la pagina non si carica più ma rimane bianca..
    Ultima modifica di legioiedigio : 05-12-2014 alle ore 19.03.40

  7. #7
    Guest

    Predefinito

    ciao di nuovo ho risolto!! mi è bastato scrivere così:
    <input type="hidden" name="titolo_articolo" value=" '. get_the_title($ID).' " />

    Grazie mille!! :D

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •