Я делаю свой первый плагин в Wordpress, который добавляет короткий код, который я могу использовать в своем заголовке.Создайте значения по умолчанию для использования в коротких замыканиях - Wordpress plugin
Плагин интегрируется с страницей параметров Wordpress. Все связанные с админом работы прекрасно работают, включая запись верхней таблицы wp_options и/или удаление/обновление полей.
Моя проблема заключается в собственном самом коротком кодексе (внизу).
Что я хочу достичь, когда get_option ('bfcsc_logout_link') не задано в admin, значение по умолчанию должно быть возвращено.
И, конечно же, я ищу «хороший способ», поэтому мой код тоже выглядит хорошо :) Когда плагин работает так, как я хочу, в конце концов, я думаю о том, чтобы сделать это еще дальше и разделить код на файлы init и т. д., сделав его более профессиональным.
Ниже приведен полный код (за исключением активов):
<?php
/*
Plugin Name: Brokenfruit Custom Login Shortcode
Plugin URI: https://www.brokenfruit.dk/
Description: Adds custom login shortcode for Brokenfruit
Version: 1.0
Author: Kenn Nielsen
Author URI: https://www.brokenfruit.dk/
License: GPL
*/
// Meaning of abbreviations:
// bfclsc = brokenfruit custom login shortcode
/* Register styles and scripts */
function bfcsc_enqueue_scripts() {
global $wpdb;
$screen = get_current_screen();
if ($screen->id != 'settings_page_brokenfruit-custom-shortcodes')
return; // exit if incorrect screen id
wp_enqueue_style('brokenfruit-shortcodes-styles', plugins_url('/css/styles.css', __FILE__));
wp_enqueue_style('bootstrap', plugins_url('/css/bootstrap.css', __FILE__));
wp_enqueue_script('admin_js_bootstrap_hack', plugins_url('/scripts/bootstrap-hack.js', __FILE__), false, '1.0.0', false);
}
add_action('admin_enqueue_scripts', 'bfcsc_enqueue_scripts');
/* Runs when plugin is activated */
register_activation_hook(__FILE__,'bfcsc_install');
/* Runs on plugin deactivation*/
register_deactivation_hook(__FILE__, 'bfcsc_remove');
function bfcsc_install() {
/* Creates new database field */
add_option('bfcsc_logout_link', '', '', 'yes');
add_option('bfcsc_login_link', '', '', 'yes');
add_option('bfcsc_account_link', '', '', 'yes');
}
function bfcsc_remove() {
/* Deletes the database field */
delete_option('bfcsc_logout_link');
delete_option('bfcsc_login_link');
delete_option('bfcsc_account_link');
}
if (is_admin()) {
function add_bfcsc_option_page() {
add_options_page(
'Brokenfruit Custom Shortcodes', // The text to be displayed in the title tag
'Brokenfruit Custom Shortcodes', // The text to be used for the menu
'administrator', // The capability required to display this menu
'brokenfruit-custom-shortcodes', // The unique slug name to refer to this menu
'bfcsc_html_page'); // The function tooutput the page content
}
/* Call the html code */
add_action('admin_menu', 'add_bfcsc_option_page');
}
function bfcsc_html_page(){
?>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>
<div class="bootstrap-wrapper">
<div class="row top-buffer">
<div class="col-md-8">
<div><h1>Brokenfruit Custom Login Shortcode</h1></div>
<p>Til brug for shortcode:<br/><span class="shortcode-preview">[custom_login]</span></p>
<div class="top-buffer"></div>
<h5>Link til log ud:</h5><input placeholder="Eksempel: wp-login.php?action=logout" class="form-control" name="bfcsc_logout_link" type="text" id="bfcsc_logout_link" value="<?php echo get_option('bfcsc_logout_link'); ?>" /></td>
<div class="top-buffer"></div>
<h5>Link til log ind:</h5><input placeholder="Eksempel: /log-ind/" class="form-control" name="bfcsc_login_link" type="text" id="bfcsc_login_link" value="<?php echo get_option('bfcsc_login_link'); ?>" /></td>
<div class="top-buffer"></div>
<h5>Link til min konto:</h5><input placeholder="Eksempel: /min-brokenfruit/" class="form-control" name="bfcsc_account_link" type="text" id="bfcsc_account_link" value="<?php echo get_option('bfcsc_account_link'); ?>" /></td>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="bfcsc_logout_link,bfcsc_login_link,bfcsc_account_link" />
<input class="btn btn-primary top-buffer" type="submit" value="<?php _e('Save Changes') ?>" />
</div>
</div>
</div>
</form>
<?php
}
/*---------------------------------------------------*/
/* Custom login shortcode - start */
/*---------------------------------------------------*/
function mydefaults(){
if (!get_option('bfcsc_logout_link')){
$logout_link = '/log-ud/';
} else {
$logout_link = get_option('bfcsc_logout_link');
}
if (!get_option('bfcsc_login_link')){
$login_link = '/log-ind';
} else {
$login_link = get_option('bfcsc_login_link');
}
if (!get_option('bfcsc_account_link')){
$account_link = '/min-brokenfruit/';
} else {
$account_link = get_option('bfcsc_account_link');
}
}
function custom_login_shortcode ($atts){
if (is_user_logged_in()) {
return '<a href="' . $account_link . '" class="custom_login"><i class="fa icon-user"></i>Mit Brokenfruit</a> | <a href="' . wp_logout_url(home_url()) . '" class="custom_login"><i class="fa icon-logout"></i>Log ud</a>';
} else {
return '<a href="/log-ind/" class="custom_login"><i class="fa icon-login"></i>Log ind</a>';
}
}
add_shortcode('custom_login', 'custom_login_shortcode');
/*---------------------------------------------------*/
/* Custom login shortcode - end */
/*---------------------------------------------------*/
?>
Спасибо всем заранее! Приветствия Кенн
Это можно использовать. Пожалуйста, скажите мне, почему, когда я тестирую: $ account_link = get_option ('bfclsc_account_link', '/ min-brokenfruit /'); var_dump ($ account_link); выводит строку (0) ""? –