Вопрос или проблема
Я пишу страницу параметров темы, которая предоставляет пространство для пользователя для ввода кода социальных кнопок, например:
<a href="https://twitter.com/share" class="twitter-share-button"
data-url="<?php echo get_permalink(); ?>">Tweet</a>
Очевидно, что использование <?php echo get_permalink(); ?>
для атрибута data-url не будет работать в текстовом поле параметров темы. Какие у меня есть варианты? Я видел, как другие используемые
-
короткие коды, например. – но как я могу обработать короткий код?
-
заменители, например {{url}} – опять же, как я могу заменить эти заменители?
Буду признателен за любые подсказки в правильном направлении. Спасибо!
Я использую короткие коды. Но с этим нужно работать иначе и упростить задачу для клиента.
- На странице параметров темы у вас должны быть поля с
type="checkbox"
, где клиент выбирает, какие кнопки для шаринга должны отображаться. -
В шаблоне вы должны получить опцию с помощью get_option(‘registered_option’) и отобразить те кнопки, для которых чекбокс был отмечен в параметрах темы.
if( get_option('tweeter_checkbox') ) echo '<a href="https://twitter.com/share" class="twitter-share-button" data-url="' . get_permalink(); . '">Tweet</a>';
Я бы выбрал метод заменителей, который вы упомянули.
Вы можете предоставить пользователю список “приемлемых” заменителей, которые вы затем будете заменять с помощью регулярного выражения.
Секрет в том, чтобы сохранить строку с заменителем в базе данных, чтобы она отображалась пользователю так, как он её ввел, в следующий раз, когда он посетит страницу параметров. Проведите вашу str_ireplace
или preg_replace
магию с ней, прежде чем использовать её в других местах темы.
ИЗМЕНЕНИЕ:
Вот код, который я придумал сегодня, который сделает это. Я предполагаю, что вы уже знакомы с настройкой вашей страницы параметров. Это позволит вам безопасно сохранить нечто вроде <a href="https://wordpress.stackexchange.com/questions/108301/{{url}}">{{url}}</a>
в таблицу wp_options
и использовать это внутри вашей темы как <a href="http://www.wp.dev/hello-world/">http://www.wp.dev/hello-world/</a>
Страница параметров для сохранения HTML с заменителем {{url}}
:
public function parse_placeholder_url( ) {
$placeholder_url = esc_html( $_POST['wpse108301']['placeholder_url'] );
if ( isset( $placeholder_url ) && is_string( $placeholder_url ) ) {
if ( get_option( 'wpse108301_placeholder_url' ) === false ) {
add_option( 'wpse108301_placeholder_url', $placeholder_url );
}
else {
update_option( 'wpse108301_placeholder_url', $placeholder_url );
}
}
else {
$placeholder_url="";
}
return $placeholder_url;
}
public function create_a_url_field() {
?><input type="text" id="wpse108301_placeholder_url" name="wpse108301[placeholder_url]" value="<?php echo stripslashes( get_option( 'wpse108301_placeholder_url' ) ); ?>" /><?php
}
functions.php
в вашей теме:
function test_link() {
$db_url = stripslashes( get_option( 'wpse108301_placeholder_url' ) );
$url = preg_replace( '/\{\{\burl\b\}\}/i', get_permalink(), $db_url );
return $url;
}
На страницах шаблонов вашей темы:
<p><?php echo test_link(); ?></p>
.
Ответ или решение
Создание страницы параметров темы для ввода кода кнопок социальных сетей — это задача, требующая особого подхода. Мы рассмотрим два метода реализации этой функциональности, используя шорткоды и плейсхолдеры, а также представим примеры кода, которые помогут вам в этом процессе.
Шорткоды
Шорткоды — это мощный инструмент в WordPress, который позволяет пользователям вставлять динамический контент, используя простые коды. Чтобы обрабатывать шорткоды в вашем параметре, вам нужно:
-
Сохранить шорткод в базе данных — Используйте метод, аналогичный приведенному ниже, чтобы сохранять шорткод в опциях вашей темы:
public function save_shortcode_option() { $shortcode = sanitize_text_field($_POST['your_option_name']); update_option('your_option_name', $shortcode); }
-
Регистрация шорткода — Зарегистрируйте шорткод, который будет обрабатывать вашу логику. Например:
function your_custom_shortcode() { $url = get_permalink(); return '<a href="https://twitter.com/share" class="twitter-share-button" data-url="' . $url . '">Tweet</a>'; } add_shortcode('social_button', 'your_custom_shortcode');
-
Вывод шорткода на странице — В вашем шаблоне вы можете вызвать шорткод следующим образом:
echo do_shortcode(get_option('your_option_name'));
Плейсхолдеры
Альтернативным методом является использование плейсхолдеров, которые вы замените динамическими значениями во время вывода.
-
Сохранение HTML с плейсхолдерами — Позвольте пользователю вводить HTML-код с плейсхолдерами:
public function save_placeholder_option() { $placeholder_html = sanitize_text_field($_POST['your_option_placeholder']); update_option('your_option_placeholder', $placeholder_html); }
-
Замена плейсхолдеров на динамические значения — При выводе информации выполните замену плейсхолдеров на актуальные URL и другие данные:
function replace_placeholders($input_string) { $url = get_permalink(); return str_replace('{{url}}', $url, $input_string); }
-
Вывод с заменой плейсхолдеров — Используйте следующий код для вывода:
$html_code = get_option('your_option_placeholder'); echo replace_placeholders($html_code);
Заключение
Оба метода — как шорткоды, так и плейсхолдеры — имеют свои преимущества и могут быть использованы в зависимости от требований вашего проекта. Шорткоды могут предоставить больше функциональности и возможностей, тогда как плейсхолдеры позволяют более гибко настраивать вводимый код.
Выбор метода зависит от удобства для вашего пользователя, требований по обработке данных и желаемого уровня сложности. Подобные решения делают вашу тему более интерактивной и позволяют пользователям легко настраивать социальные кнопки, что, в конечном итоге, приводит к повышению удобства использования.