cari
Rumahpembangunan bahagian belakangtutorial phpUbah suai siaran anda dengan petisyen yang cantik

Ubah suai siaran anda dengan petisyen yang cantik

WordPress ialah platform pelbagai guna yang hebat. Anda boleh membuat tapak web dengan pelbagai tujuan: tapak web syarikat, pameran fotografi, portal berita, tapak web restoran dengan menu interaktif... Oh, dan sudah tentu blog. Anda boleh berblog menggunakan WordPress. terlupa.

Anehnya, organisasi bukan untung sering mengabaikan fleksibiliti ini dan mengambil kesempatan daripadanya. Dalam tutorial ini, kami akan menunjukkan kepada anda cara membuat skrip petisyen mudah yang menunjukkan cara sesebuah organisasi boleh mendapat manfaat daripada WordPress.


Apa sebenarnya yang kita bina?

Saya peminat tegar kod pendek (seperti yang anda boleh lihat daripada siaran saya sebelum ini), jadi kami akan membuat sekumpulan kod pendek dan beberapa fungsi berguna untuk digunakan kod pendek. Kami akan meletakkan semua ini dalam fail yang dipanggil petition.php dan menggunakannya sebagai pemalam WordPress.


Fungsi tambahan

Memandangkan kita akan menggunakannya dalam kod pendek, saya fikir adalah lebih baik untuk mencipta dan menerangkannya terlebih dahulu.

Fungsi pengesahan e-mel asas

Jika anda menggunakan PHP5 pada pelayan anda, kami akan menggunakan pengesah e-mel terbina dalam untuk fungsi kami:

// e-mail address validating function
function validate_email( $email ) {
	if ( $email == '' ) {
		return false;
	} else {
		return filter_var( $email, FILTER_VALIDATE_EMAIL );
	}
}

Jika anda menggunakan sesuatu yang lama seperti PHP4, anda boleh menggunakan fungsi berbeza yang menggunakan ungkapan biasa:

// e-mail address validating function
function validate_email( $email ) {
	if ( $email == '' ) {
		return false;
	} else {
		$eregi = preg_replace( '/([a-z0-9_.-]+)' . '@' . '([a-z0-9.-]+){2,255}' . '.' . '([a-z]+){2,10}/i', '', $email );
	}
	return empty( $eregi ) ? true : false;
}

Sila ambil perhatian: Anda tidak boleh menggunakan kedua-duanya pada masa yang sama!

Fungsi menghantar penyertaan

Kami boleh mencipta dan menggunakan jadual pangkalan data yang berbeza untuk mengandungi penyerahan petisyen, tetapi saya rasa ini bukan amalan yang baik. Hei, ada masalah dengan medan tersuai?

// submit the signer with a 'petition_submission' meta key to the post
function submission( $name, $email, $date ) {
	global $post;
	$array = array( 'name' => $name, 'email' => $email, 'date' => $date );
	$petition_meta = serialize( $array );
	add_post_meta( $post->ID, 'petition_submission', $petition_meta );
	return true;
}

Seperti yang anda boleh baca dari kod;

  • Kami meletakkan pembolehubah $name, $email dan $date ke dalam fungsi (daripada shortcode yang akan kami bincangkan kemudian) $name$email$date 变量放入函数中(来自我们稍后将介绍的简码)
  • 通过创建数组并将其序列化将三个变量放在一起
  • 并将数据保存为名为 'petition_submission' 的自定义字段

很简单,对吧?现在我们可以进入有点困难的部分了。

获取提交内容的函数

我们现在可以保存提交的内容,但是我们如何获取它们并使用它们进行操作?方法如下:

// fetch the submissions from the post
function get_the_submissions( $number = 5 ) {
	$petition_meta = get_post_custom_values( 'petition_submission' );
	if ( $petition_meta ) {
		$output = array_slice( $petition_meta, $number * -1 );
		return array_reverse( $output );
	}
}

还记得我说过这会有点困难吗?我撒谎了:

  • 我们使用“petition_submission”键将帖子元数据的值分配给数组变量
  • 然后我们从数组末尾获得了 $number Satukan tiga pembolehubah dengan mencipta tatasusunan dan mensirikannya
  • Dan simpan data sebagai medan tersuai bernama 'petition_submission'
  • Mudah kan? Sekarang kita boleh sampai ke bahagian
  • agak sukar
.

Fungsi untuk mendapatkan kandungan yang dihantar

Kami kini boleh menyimpan penyerahan, tetapi bagaimanakah kami mendapatkannya dan bertindak dengannya? Begini caranya:

#petition_form {}
#petition_form label {
	font-weight: bold;
	font-size: larger;
	line-height: 150%;
}
#petition_form input {
	display: block;
	margin: 5px 0;
	padding: 3px;
}
#petition_name {
	width: 200px;
}
#petition_email {
	width: 200px;
}
#petition_submit {
	padding: 5px;
}
.petition_success {
	color: #693;
}
.petition_error {
	color: #A00;
}
.petition_list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.petition_list li {
	background-image: none !important;
}
.petition_list span {
	display: inline-block;
	width: 45%;
	padding: 1%;
	margin: 1%;
	background-color: #FAFAFA;
}
.submission_name {}
.submission_date {
	font-style: italic;
	color: #888;
}

Ingat apabila saya berkata ini akan menjadi

agak sukar

? Saya berbohong:

Kami menetapkan nilai metadata siaran kepada pembolehubah tatasusunan menggunakan kekunci "petition_submission"

Kemudian kami mendapat $number (lalai 5) commit dari hujung tatasusunan

(nota -1)

Kami memulangkan terbalik

senarai tatasusunan hirisan ini untuk menyusunnya daripada yang terbaru kepada yang paling lama

Tambahan: pemilih CSS untuk digunakan Kami akan menggunakan beberapa pemilih CSS dalam kod, jadi letakkannya dalam fail

style.css

tema anda:

function petition_form_sc( $atts ) {
	// extract the shortcode parameters
	extract( shortcode_atts( array(
		// the text value of the submit button
		'submit' => 'Submit',
		// the text for the error message
		'error' => 'Your e-mail address is not valid. Please re-enter the form with a valid name and e-mail address.',
		// the text when the submission is successful
		'success' => 'Your submission has been saved. Thank you!'
	), $atts ) );

	// the HTML elements of our petition form
	$form = '<form action="'.get_permalink().'" method="post" id="petition_form">
		<label for="petition_name">Name:</label>
		<input type="text" name="petition_name" id="petition_name" />
		<label for="petition_email">E-mail address:</label>
		<input type="text" name="petition_email" id="petition_email" />
		<input type="submit" name="petition_submit" id="petition_submit" class="submit" value="'.$submit.'" />
	</form>';

	// if the form is "POST"ed...
	if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
		// ...get the name...
		$name = $_POST['petition_name'];
		// ...and the e-mail address...
		$email = $_POST['petition_email'];
		// ...and the date of "just now", with the date format of your WP options.
		$date = date( get_option( 'date_format' ) );
		// validate the e-mail address first!
		if ( validate_email( $email ) == true ) {
			// the e-mail address is valid! remember the function below?
			submission( $name, $email, $date );
			// we sent the variables with the submission() function, now we print the success message WITHOUT THE FORM:
			return '<div class="petition_success">' . $success . '</div>';
			// (if you want the form to be printed again after the submission, just add .$form before the semicolon.)
		} else {
			// the e-mail address is NOT valid! we should print the error message WITH THE FORM:
			return '<div class="petition_error">' . $error . '</div>' . $form;
		}
	}
	// and if the form isn't "POST"ed (meaning the visitor just visited the page), just show the form!
	else {
		return $form;
	}
}
add_shortcode( 'petition_form', 'petition_form_sc' );

Jangan ragu untuk mengedit nilai lalai sifat :)

Kod ringkas

Kami telah melengkapkan fungsi pembantu dan kod CSS. Sekarang, mari kita ke bahagian yang menyeronokkan - kod pendek!

Kita hanya boleh menggunakan kod pendek yang besar untuk melampirkan borang, menyenaraikan penyertaan dan memaparkan bilangan penyerahan, tetapi... mengapa membunuh semua keseronokan? Selain itu, kod pendek yang berasingan untuk ketiga-tiga elemen ini akan membolehkan kami menggunakannya di mana-mana sahaja dalam kandungan kami.

Pernahkah saya memberitahu anda cara

Saya suka

kod pendek?

Kod pendek untuk petisyen

Fungsi ini agak panjang, jadi saya akan menggunakan komen PHP untuk menerangkan kod
Di dalam

:

function petition_list_sc( $atts ) {
	// extract the shortcode parameters
	extract( shortcode_atts( array(
		// we could set a default number but remember, we already did that in the get_the_submissions() function :)
		'number' => ''
	), $atts ) );

	// get the $number latest submissions...
	$submissions = get_the_submissions( $number );

	// ...and list 'em!
	$output = '<ul class="petition_list">';
	if ( $submissions ) {
		foreach( $submissions as $submission ) {
			// unserialize the data
			$signer = unserialize( $submission );
			// unserialize the data AGAIN, don't know why...
			$signer = unserialize( $signer );
			// you might want to change this part, but the default format look great with the CSS in this tutorial.
			$output .= '<li>';
			$output .= '<span class="submission_name">' . $signer['name'] . '</span>';
			$output .= '<span class="submission_date">' . $signer['date'] . '</span>';
			$output .= '</li>';
		}
	}
	$output .= '</ul>';

	return $output;
}
add_shortcode( 'petition_list', 'petition_list_sc' );

Saya cuba untuk menjadi sejelas mungkin, tetapi jika anda rasa saya terlepas sesuatu, jangan ragu untuk bertanya kepada saya dengan mengulas pada siaran ini!

🎜Kod pendek untuk menyerahkan senarai🎜 🎜Bahagian "Entri Terkini" adalah 🎜bukti🎜 bahawa orang menyertai usaha anda, jadi kami perlu menyenaraikan sekurang-kurangnya beberapa penyerahan tertentu. 🎜 🎜Ini juga bukan fungsi pendek, jadi saya akan menerangkan kod dengan ulasan sekali lagi: 🎜
function petition_count_sc() {
	$petition_meta = get_post_custom_values( 'petition_submission' );
	return count( $petition_meta );
}
add_shortcode( 'petition_count', 'petition_count_sc' );
🎜Sekali lagi, jika anda ingin bertanya sebarang soalan, sila tinggalkan komen pada siaran ini. 🎜 🎜Kod pendek untuk kiraan petisyen🎜 🎜Ini adalah fungsi yang sangat kecil hanya untuk mengetahui jumlah penyertaan yang dihantar: 🎜 rrreee 🎜Seperti yang anda lihat, ia hanya membuang medan tersuai ke dalam tatasusunan dan mengiranya serta mengembalikan nombor itu. 🎜 🎜 🎜Kesimpulan🎜 🎜Saya harus menekankan bahawa ini adalah contoh yang sangat mudah tentang cara organisasi boleh mendapat manfaat daripada WordPress dengan memanfaatkan jenis skrip ini. Jika anda boleh memikirkan penambahbaikan pada skrip ini (atau tutorial), sila kongsikan pendapat anda dalam ulasan di bawah. Terima kasih kerana membaca! 🎜

Atas ialah kandungan terperinci Ubah suai siaran anda dengan petisyen yang cantik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah perbezaan antara masa tamat sesi mutlak dan terbiar?Apakah perbezaan antara masa tamat sesi mutlak dan terbiar?May 03, 2025 am 12:21 AM

Timeout sesi mutlak bermula pada masa penciptaan sesi, sementara waktu tamat sesi terbiar bermula pada masa operasi pengguna. Tamat masa sesi mutlak sesuai untuk senario di mana kawalan ketat kitaran hayat sesi diperlukan, seperti aplikasi kewangan; Timeout sesi terbiar sesuai untuk aplikasi yang mahu pengguna menyimpan sesi mereka aktif untuk masa yang lama, seperti media sosial.

Apakah langkah yang akan anda ambil jika sesi tidak berfungsi di pelayan anda?Apakah langkah yang akan anda ambil jika sesi tidak berfungsi di pelayan anda?May 03, 2025 am 12:19 AM

Kegagalan sesi pelayan boleh diselesaikan dengan mengikuti langkah -langkah: 1. Semak konfigurasi pelayan untuk memastikan sesi ditetapkan dengan betul. 2. Sahkan kuki klien, sahkan bahawa penyemak imbas menyokongnya dan hantar dengan betul. 3. Periksa perkhidmatan penyimpanan sesi, seperti Redis, untuk memastikan bahawa mereka beroperasi secara normal. 4. Semak kod aplikasi untuk memastikan logik sesi yang betul. Melalui langkah -langkah ini, masalah perbualan dapat didiagnosis dengan berkesan dan diperbaiki dan pengalaman pengguna dapat diperbaiki.

Apakah kepentingan fungsi session_start ()?Apakah kepentingan fungsi session_start ()?May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanaginguserSessions.1) itinitiatesanewsessionifnoneexists, 2) resumeSanexistingsession, dan3) setSasessionCookieforcontinuityAcrossrequests, enableingApplicationeUseUshenticationandPersonalConizedConizedContentContentContentContentContentContentContentContentContentContentContentC.

Apakah kepentingan menetapkan bendera httponly untuk cookies sesi?Apakah kepentingan menetapkan bendera httponly untuk cookies sesi?May 03, 2025 am 12:10 AM

Menetapkan bendera httponly adalah penting untuk cookies sesi kerana ia dapat mencegah serangan XSS dengan berkesan dan melindungi maklumat sesi pengguna. Khususnya, 1) bendera httponly menghalang JavaScript daripada mengakses kuki, 2) bendera boleh ditetapkan melalui setcookies dan make_response dalam php dan flask, 3) walaupun ia tidak dapat dicegah dari semua serangan, ia harus menjadi sebahagian daripada dasar keselamatan keseluruhan.

Masalah apa yang diselesaikan oleh sesi php dalam pembangunan web?Masalah apa yang diselesaikan oleh sesi php dalam pembangunan web?May 03, 2025 am 12:02 AM

PhpsSesionssolveThublemofMainTainStateAsmultipHttprequestsByStoringDataontheserverArverArsociatingWithauniquesession.1) merekaSTOREdataServer-sisi, biasanya

Data apa yang boleh disimpan dalam sesi PHP?Data apa yang boleh disimpan dalam sesi PHP?May 02, 2025 am 12:17 AM

Phpsessionscanstorestrings, nombor, tatasusunan, andobjects.1.strings: textdatalikeusernames.2.numbers: integersorfloatsforcounters.3.Arrays: ListsLikeshoppingCarts.4.Objects: complextructureSturesthatareserialized.

Bagaimana anda memulakan sesi PHP?Bagaimana anda memulakan sesi PHP?May 02, 2025 am 12:16 AM

Tostartaphpsession, usesession_start () atthescript'sbeginning.1) placeitbeforeanyoutputtosetthesessioncookie.2) usesessionsforusererdatalikeloginstatusorshoppingcarts.3)

Apakah regenerasi sesi, dan bagaimanakah ia meningkatkan keselamatan?Apakah regenerasi sesi, dan bagaimanakah ia meningkatkan keselamatan?May 02, 2025 am 12:15 AM

Penjanaan semula sesi merujuk kepada menjana ID sesi baru dan membatalkan ID lama apabila pengguna melakukan operasi sensitif dalam kes serangan tetap sesi. Langkah-langkah pelaksanaan termasuk: 1. Mengesan Operasi Sensitif, 2. Menjana ID Sesi Baru, 3. Memusnahkan ID Sesi Lama, 4. Kemas kini maklumat sesi pengguna.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular