Intereting Posts

Пользовательский CSS без файла css.php

я создаю тему и хочу, чтобы пользователь мог выбрать семейство шрифтов. Как правило, я вижу, что люди используют файлы css.php и передают пользовательские переменные внутри него.

Я немного обеспокоен этим подходом, хотя мне бы не хотелось, чтобы мой файл css фактически являлся файлом php, что также затрудняет работу.

Итак, я хотел бы спросить, могли ли разработчики wordpress подумать об этом и добавили другой способ указания таких пользовательских значений. Кто-нибудь знает, может ли это так или иначе возникнуть без использования php с самим style.css?

Solutions Collecting From Web of "Пользовательский CSS без файла css.php"

Это можно сделать двумя способами.

Создать файл CSS

Первым вариантом будет написать ваш файл CSS после того, как пользователь выберет пользовательский шрифт. Я предполагаю, что у вашей темы будет панель параметров. Когда пользователь отправляет данные, новый CSS-файл будет создан с использованием этих данных и любых других данных, создаваемых вашей панелью параметров.

Ниже приведена функция, которую я использовал для чего-то подобного. Он проверяет, не отличается ли предлагаемое содержимое нового файла от существующего файла и сохраняет новые данные, если это необходимо. Вам нужно будет изменить это, особенно, поскольку это не требует обработки данных. Это может или не может работать для вашей ситуации, но стоит взять пик

/** * Determines if a Custom CSS file needs to be updated and if it can be updated * * @params string $css_file_on_server Path to CSS file of interest on server * @params string $new_contents Contents from the $_POST variable * @params string $name Name of the file being changed * @since r30 * @return boolean Returns true if content was updated, false if it was not; it also records errors in the errors array */ function prefix_process_custom_css($css_file_on_server, $new_contents, $name){ global $errors; // Get the contents of the CSS file on the server and convert it to a dechex representation $css_file_on_server_contents = strtoupper(dechex(crc32(trim(stripslashes(file_get_contents($css_file_on_server)))))); // Put new contents in same dechex format $new_contents_representation = strtoupper(dechex(crc32(trim(stripslashes($new_contents))))); // Compare contents if ($css_file_on_server_contents != $new_contents_representation) { // Stripslashes $new_contents = stripslashes(($new_contents)); // Make sure file is writable if (is_writeable($css_file_on_server)) { // Write file if(file_put_contents($css_file_on_server, $new_contents)){ return true; } else{ $errors[] = __('An error occurred while trying to write the "'.$name.'" CSS file.'); return false; } } else { $errors[] = __('The "'.$name.'" CSS file on the server is not writable. Check the permissions on the file and try again.'); return false; } } else { return false; } } 

Внутренний лист стилей

Моя другая рекомендация заключалась бы в использовании внутренней таблицы стилей для динамических данных. Вы загрузите свой статический CSS-контент во внешнюю таблицу стилей, а затем динамически, между тегами стиля в заголовке вашего файла заголовка, напишите части динамического CSS. Например, вы можете сделать что-то вроде файла functions.php:

 add_action('wp_print_styles', 'prefix_print_styles') function prefix_print_styles() { ?> <style type="text/css"> p{ font-family: <?php echo get_option('prefix-font-family'); ?> } </style> <?php } 

Это также можно было бы включить непосредственно в файл заголовка, но использование этого метода может заставить его играть лучше с другими плагинами.

Конечно, ваша нормальная таблица стилей будет включена в файл header.php с чем-то вроде:

 <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" /> 

Действие wp_print_styles будет работать, только если вы включили wp_head() где-нибудь в вашем файле header.php (должно быть, после добавления вашей таблицы стилей).