Здравствуйте.
Есть самописный плагин для WP. Суть - в админ-панели сайта вводим данные в полях (номер телефона). Этот номер должен отображаться в кнопке (которая выводится на всех страницах сайта). При изменении номера - он соответственно должен измениться и в кнопке.
Сам код:
<?php
if ( !function_exists( 'add_action' ) ) {
echo 'Hi there! I\'m just a plugin, not much I can do when called directly.';
exit;
}
register_activation_hook( __FILE__, array( 'Phone FOX', 'plugin_activation' ) );
register_deactivation_hook( __FILE__, array( 'Phone FOX', 'plugin_deactivation' ) );
function phone_fox_display(){
$options["number1"] = get_option("number1_on_button");
$options["number2"] = get_option("number2_on_button");
echo
'<div style="
position: fixed;
bottom: 10px;
right: 25px;
background-color: #273595;
z-index: 999;
border-radius: 30px;
animation: pulse 1s infinite;">
<a style="display: flex;
align-items: center;
justify-content: center;
color: #f4f030;
font-size: 18px;
font-weight: 800;
width: 220px;
height: 50px;"
href="tel:'options[number1]'">
<span style="margin-left: 5px;">'options[number2]'</span>
</a>
</div>';
}
function phone_fox_settings()
{
// this is where we'll display our admin options
if ($_POST["action"] == "update")
{
$_POST["write_number1"] != "" ? update_option("number1_on_button", "write_number1") : update_option("number1_on_button", "");
$_POST["write_number2"] != "" ? update_option("number2_on_button", "write_number2") : update_option("number2_on_button", "");
$_POST["write_number1"] != "" ? update_option("number1_on_button", "write_number1") : update_option("number1_on_button", "");
$_POST["write_number2"] != "" ? update_option("number2_on_button", "write_number2") : update_option("number2_on_button", "");
$message = '<div id="message" class="updated fade"><p><strong>Options Saved</strong></p></div>';
}
$options["number1"] = get_option("number1_on_button");
$options["number2"] = get_option("number2_on_button");
echo '
<div class="wrap">
'.$message.'
<h2>Phone FOX Settings</h2>
<form method="post" action="">
<h3>Write a phone number for the button</h3>
<input name="write_number1" type="text" id="write_number1" '.$options['number1'].' /> Format -> +375290000000<br />
<input name="write_number2" type="text" id="write_number2" '.$options['number2'].' /> Format -> +375(29)000-00-00<br />
<br />
<input type="submit" class="button-primary" value="Save Changes" />
</form>
</div>';
}
function phone_fox_admin_menu()
{
// this is where we add our plugin to the admin menu
add_options_page('Phone FOX', 'Phone FOX', 9, basename(__FILE__), 'phone_fox_settings');
}
add_action( 'admin_menu', 'phone_fox_admin_menu' );
Если (в строках 34 и 36) вместо 'options[number1]' и 'options[number2]' подставить номер (например +95484543159 и +9548(454)3159) -> на сайте номер отображается в кнопке, все ок.
Но, при значениях 'options[number1]' и 'options[number2]' -> в кнопке изначально ничего не отображается (логично), но и после ввода данных через админ-панель также ничего не отображается и не обновляется.
Подскажите, пожалуйста, как можно решить данную проблему, что сделал не правильно.
Опыта практически нету, поэтому хочется разобраться.
Другие варианты реализации кнопки типа через шорткод и т.п. не рассматриваю т.к. хочется понять решение именно через плагин.
Заранее спасибо.