私は過去数日間このプラグインに取り組んできましたし、それを改善する方法のアイデアを書き留めてきました。
私のphpに関する知識は最強ではなく、私はほとんどの時間を進むにつれて学んでいます。
質問:
さらに発展させるためのアイデアは、ショートコードに引用符を渡し、ショートコードを介してWebサイトに表示することです。
/*
Plugin Name: Random Quotes
Plugin URI: xxx
Description: This Plugin randomly generates Quotes input by the user.
Version: 0.0.3
Author: xxx
Author URI: xxx
License: GPL2
*/
/*
Function Reference
array_Rand($array) - Randomises an array can be used with shuffle().
ucfirst($string) - replaces the first character of the string as uppercase.
substr($string, $start, int $length) - Returns the portion of string specified by the start and length parameters.
strtolower($string) - converts all characters in the string to lowercase.
*/
// call the functions
add_action('admin_menu', 'dw_quotes_create_menu');
add_action('init', 'validate_dw_quote');
add_action('init', 'dw_get_random_quote');
add_action('init', 'grammer_dw_quote');
function dw_quotes_create_menu() {
//create custom top-level menu
add_menu_page('Quotes Settings', 'Quotes Styling', 'manage_options', 'dw_quotes', 'dw_styling_quotes_settings');
}
//generating the random quote
function dw_get_random_quote() {
//call the quote from the database
$quote = get_option('list_of_quotes');
//randomise the quote
$random_quote = array_Rand($quote);
//call a value and add it to $output
$output = $quote[$random_quote];
//return the result
return $output;
}
function grammer_dw_quote() {
//call the quote from the previous func
$grammer = dw_get_random_quote();
//add a capital letter to the first letter - make the rest lowercase
ucfirst(strtolower($grammer));
//if the last character is not a period then append one to the string
if(substr($grammer, -1) != '.') {
$grammer.= '.';
}
//return the result
return $grammer;
}
function validate_dw_quote() {
//validation here
if (isset($_POST['submit'] ) ) {
//checking that $_POST['adding_quote'] is set
if( isset( $_POST['adding_quote'] ) ) {
//retrieve the stored values
if( get_option( 'list_of_quotes' ) )
$list_of_quotes = get_option('list_of_quotes');
else
$list_of_quotes = array();
//add the new quote to the end of the array
$list_of_quotes[] = $_POST['adding_quote'];
//store the updated quote
if ( update_option( 'list_of_quotes', $list_of_quotes ) ) {
echo "<p>Success your quote was added!</p>";
} else {
echo "<p>Failed to add quote!</p>";
}
}
}
}
//styling the admin menu
function dw_styling_quotes_settings() { ?>
<h2>Quote Setting</h2>
<form action="admin.php?page=dw_quotes" method="post">
<label for="add">Enter your quote</label>
<input type="textarea" name="adding_quote" />
<input type="submit" name="submit" value="add the new quote" />
<?php //test the output
//var_dump($list_of_quotes);
?>
<h2>Current Quote displayed</h2>
<label for="display"> <?php echo grammer_dw_quote(); ?></label>
<?php } ?>
WordPressのAPIを使用して引用符を検証するためのより効率的な方法はありますか?
$_POST
の形式で正しくサニタイズするには、 filter_input
および/または filter_input_array
を参照してください。validationではパフォーマンス上の問題は見られませんが、パフォーマンス上の問題として、1つの大きな直列化された配列にすべての引用符を保存することが考えられます。それから、dbから非常に大きなシリアライズされた文字列を取り出して(大量のメモリを埋める)、それをアンシリアライズ(大きな文字列でのシリアライゼーション/アンシリアライゼーションは時間がかかる場合があります)) 。
パフォーマンスの向上は別々に見積もりを保存することができます。
ショートコードで見積もりを表示するためにどのような手順を踏みますか?
ショートコードを追加するのは非常に簡単です(たぶんこれが何人かの開発者がそれを使い過ぎる理由です)、 add_shortcode
doumentation を見てください。
あなたのgrammer_dw_quote()
がreturn
ではなく引用文をecho
にしているのであれば、単一行
add_shortcode( 'dw_quote', 'grammer_dw_quote' );
ランダムな引用符を表示する[dw_quote]
ショートコードを追加するのに十分でしょう。
選択した見積を削除するための最善の方法は何ですか?
あなたの方法を使用する:locate特定の見積もりを難しくしてそれを削除するよりも、すべての見積もりをまとめて保存します。あなたがいるところ
$list_of_quotes[] = $_POST['adding_quote'];
あなたはおそらく持っているべきです
$list_of_quotes[$a_unique_id] = $_POST['adding_quote'];
このようにすると、特定の見積もりを取得して削除することができます。つまり、quotes配列からunset
と入力してから、もう一度保存します。このユニークなIDが何であるべきかはあなた次第です。
しかし、私はあなたに質問に答えたので、私はあなたに提案をしたいです。
あなたが引用符のための カスタム投稿タイプを作成するなら あなたはほとんどすべてのあなたの問題を解決します:
より少ないコードを書くことはあなた自身で実装するのに苦労することができる多くの機能を持つことができ、そしておそらく意味をなさない。
この答えの最初の部分 を見て考えることができます 。そこにCPTが「ジョーク」のためである、あなたは「引用符」を持っています、しかしそれほど違いはありません。