J'ai travaillé sur ce plugin ces dernières nuits et j'ai noté comment l'améliorer.
Ma connaissance du php n'est pas la plus solide et j'apprends la plupart du temps.
Des questions:
l’idée de développer davantage serait de passer la citation dans un shortcode et de l’afficher sur un site Web via le shortcode. * /
/*
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 } ?>
Existe-t-il des moyens plus efficaces de valider les citations à l’aide de l’API WordPress?
$_POST
, regardez filter_input
et/ou filter_input_array
Je ne vois pas de problèmes de performances sur la validation , mais un problème de performances possible est de sauvegarder toutes les citations dans un grand tableau sérialisé dans une seule option: si vous avez beaucoup de citations, devez extraire de db une très grosse chaîne sérialisée (remplissez donc une grande quantité de mémoire), désérialisez-la (la sérialisation/désérialisation sur de grandes chaînes peut être lente) et tout cela pour afficher une petite partie (un guillemet).
Une amélioration des performances peut être stockée citations séparément.
Quelles étapes dois-je suivre pour afficher le devis via un shortcode?
Ajouter un shortcode est très simple (c'est peut-être la raison pour laquelle certains développeurs l'utilisent de manière excessive), voir add_shortcode
doumentation .
Si votre grammer_dw_quote()
souhaite return
le texte du devis au lieu de echo
il, alors la ligne unique
add_shortcode( 'dw_quote', 'grammer_dw_quote' );
serait suffisant pour ajouter un shortcode [dw_quote]
qui imprime une citation aléatoire.
Quel serait le meilleur moyen de supprimer les citations sélectionnées?
En utilisant votre méthode: enregistrez toutes les citations ensemble, il est difficile de localiser une citation spécifique et de la supprimer ... vous devez définir une sorte d'id de citation, par exemple. où tu as
$list_of_quotes[] = $_POST['adding_quote'];
vous devriez probablement avoir
$list_of_quotes[$a_unique_id] = $_POST['adding_quote'];
De cette manière, il serait simple d’obtenir un devis spécifique et de le supprimer, c’est-à-dire unset
du tableau quotes, puis de le sauvegarder à nouveau. Ce que cet identifiant unique devrait être est à vous.
Cependant, maintenant que j'ai répondu à votre question, je veux vous faire une suggestion.
Si vous créez un type d'article personnalisé pour les guillemets , vous résolvez à peu près tous vos problèmes:
En écrivant moins de code, vous pouvez avoir beaucoup de fonctionnalités qui peuvent être difficiles à implémenter par vous-même, et qui n’ont probablement aucun sens.
Vous pouvez faire une idée en regardant la première partie de cette réponse . Là, le CPT est pour "blagues", vous avez des "citations", mais il n'y a pas beaucoup de différence.