كيف يمكنني توجيه ووردبريس لاستخدام اسم ملف آخر غير "styles.css" في ورقة أنماطي الرئيسية - على سبيل المثال ، Styles-1.css؟ أود القيام بذلك لأغراض تعيين الإصدار والتخزين المؤقت.
Style.css
مطلوب لموضوع WordPress الخاص بك. حيث يحصل WordPress على اسم السمة ومعلومات التعريف الخاصة بقائمة Appearance >> Themes من. ومع ذلك ، ليس عليك فعلاً استخدام style.css
في نسختك على الإطلاق. أعرف العديد من السمات المتاحة بسهولة والتي لا تستخدمها ، وأنا أستخدمها فقط في حفنة من تصميماتي المخصصة.
في header.php
، ضع العلامة التالية بدلاً من رابط ورقة الأنماط العادية:
<link rel="stylesheet" type="text/css" href="<?php bloginfo('stylesheet_directory'); ?>/style-1.css" />
سيؤدي هذا إلى تحميل ورقة أنماط بديلة كصفحة أنماط للصفحة وتجاهل الكود العادي style.css
تمامًا.
قد يكون هذا غير مناسب ، فالرجاء إخبارنا إذا فاتني شيء ما.
الوسيطة الرابعة إلى wp_enqueue_style()
هي رقم إصدار ورقة الأنماط. في موضوعك functions.php
:
function my_theme_styles() {
// replace "10" with your version number; increment as you Push changes
wp_enqueue_style('my-theme-style', get_bloginfo('template_directory') . '/style.css', false, 10);
}
add_action('wp_print_styles', 'my_theme_styles');
يتطلب أن تقوم header.php
بعمل wp_head()
، أي بالطبع كنت تفعله على أي حال. ؛)
يتيح لك ذلك دفع رؤوس انتهاء الصلاحية الطويلة باستخدام ملف CSS ، وإجبار العملاء على تنزيل ملف جديد عن طريق تحديث رقم الإصدار. WP سيتم إلحاق "؟ ver = N" بعنوان URL الخاص بملف CSS.
قم بإسقاط هذا في ملف الوظائف الخاص بك.
function my_cool_style_versioner( $style ){
return str_replace( '/style.css', '/style-1.css', $style );
}
add_filter( 'stylesheet_uri', 'my_cool_style_versioner' );
لاحظ أنك لا يجب عليك استخدام querystrings لإصدار الملفات (لا تقوم الوكلاء بتخزينها مؤقتًا).
هناك طريقة أفضل لإصدار أسماء الملفات مثل إضافة رقم مثل
لذلك منهجي هو ما يلي:
إذا كنت تستخدم HTML5 boilerplate مع Apache ، يمكنك العثور على القسم التالي في.htaccess file:
# ------------------------------------------------------------------------------
# | Filename-based cache busting |
# ------------------------------------------------------------------------------
# If you're not using a build process to manage your filename version revving,
# you might want to consider enabling the following directives to route all
# requests such as `/css/style.12345.css` to `/css/style.css`.
# To understand why this is important and a better idea than `*.css?v231`, read:
# http://stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
</IfModule>
(عادةً ما يتعين عليك تمكينه أولاً ، عن طريق فك الخطوط)
أردت استخدام إصدار السمة الخاصة بي تلقائيًا في ورقة الأنماط ، لذلك توصلت إلى ما يلي:
يمكنك إضافة ما يلي إلى السمات الخاصة بك jobs.php :
function my_theme_styles() {
$my_theme = wp_get_theme();
$version = str_replace('.','',$my_theme->get( 'Version' ));
$stylesheet = get_bloginfo('stylesheet_directory').'/style.'.$version.'.css';
wp_enqueue_style('my-main', $stylesheet, false, null);
}
add_action('wp_print_styles', 'my_theme_styles');
لاحظ ، أنني قدمت null
كإصدار بدلاً من false
، لذلك لا يقوم Wordpress بإلحاق إصداره في الاستعلام.
يؤدي ذلك إلى إخراج ورقة أنماط مثل ما يلي للإصدار 1.0.2 من نسختك:
<link rel='stylesheet' id='maw-main-css' href='http://www.example.com/wp-content/themes/my-theme/style.102.css' type='text/css' media='all' />
بعد أن أغير السمة الخاصة بي إلى الإصدار 2.0.0 في طريقتي. سيؤدي ذلك إلى إخراج ما يلي:
<link rel='stylesheet' id='maw-main-css' href='http://www.example.com/wp-content/themes/my-theme/style.200.css' type='text/css' media='all' />
احذر ، إذا قمت فقط بتجريد النقاط من الإصدار كما فعلت ، فقد تواجه مشكلات في إصدار السمة مثل 1.2.23 و 1.22.3 ، لأن كلاهما ينتج عنه إصدار بدون نقاط من 1223.
أفضل طريقة هي أخذ ذلك في الاعتبار في ملف htaccess. على سبيل المثال ، يمكنك السماح بالشرطات السفلية بين الأعداد واستبدال النقاط بها.
هذا لم يتم اختباره ، ولكن يجب أن يعمل:
# ------------------------------------------------------------------------------
# | Filename-based cache busting |
# ------------------------------------------------------------------------------
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.([_\d]+)\.(js|css|png|jpe?g|gif)$ $1.$3 [L]
</IfModule>
function my_theme_styles() {
$my_theme = wp_get_theme();
$version = str_replace('.','_',$my_theme->get( 'Version' ));
$stylesheet = get_bloginfo('stylesheet_directory').'/style.'.$version.'.css';
wp_enqueue_style('my-main', $stylesheet, false, null);
}
add_action('wp_print_styles', 'my_theme_styles');
EAMann صحيح ، لست مضطرًا إلى استخدام ملف style.css
لجميع CSS.
لتعيين ورقة الأنماط والملفات الأخرى في نسختك ، يمكنك إضافة هذا إلى ملف jobs.php الخاص بك
function fileVersion($filename)
{
// get the absolute path to the file
$pathToFile = TEMPLATEPATH.'/'.$filename;
//check if the file exists
if (file_exists($pathToFile))
{
// return the time the file was last modified
echo filemtime($pathToFile);
}
else
{
// let them know the file wasn't found
echo 'FileNotFound';
}
}
وبعد ذلك ، عندما تقوم بإنشاء رابط إلى ورقة أنماطك ، يمكنك القيام بذلك.
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>?v=<?php fileVersion('style.css'); ?>" />
وبهذه الطريقة ، لا يتعين عليك تحديث رقم الإصدار يدويًا ، وفي أي وقت يتم فيه تحديث الملف على الخادم ، سيتغير الإصدار تلقائيًا إلى الطابع الزمني UNIX
حسنًا ، يمكنك ببساطة استخدام style.css
كمكان للاتصال بالنسخة التي تريدها. ببساطة
@import url("style-1.css");
ثم عندما تقوم بترقية إصدار ، فقط قم بتحريره ليكون:
@import url("style-2.css");
بالنسبة إلى حفظ الإصدارات ، هل فكرت في استخدام التخريب ، أو بوابة ؟ بعد ذلك ، يمكنك الحصول على سجل كامل لورقة الأنماط الخاصة بك. من الممكن أنني لا أفهم تمامًا الأسباب الكاملة لإصدارك.
صادفت هذا السؤال القديم ووجدت كل الإجابات تبدو قديمة في هذه الأيام.
أود ببساطة استخدام إصدار السمة كما هو محدد في جزء رأس ملف style.css. يمكنك الحصول عليها مع wp_get_theme()->get( 'Version' )
function my_enqueue_styles() {
wp_enqueue_style( 'my-theme-style', get_template_directory_uri() . '/style.css', false, wp_get_theme()->get( 'Version' ) );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_styles' );
مثل هذا ، سيتم إلحاق رقم الإصدار تلقائيًا إلى عنوان url مثل ?ver=#.##
ويتغير عنوان url بمجرد زيادة إصدار السمة في style.css.
في functions.php
التغيير
wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri();
إلى
wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri(), array(), $ver );
قم بتغيير $ver
إلى أي قيمة ، أو time()
لوضع التطوير.
لست متأكدًا مما إذا كان هذا قد تغير بالنسبة إلى WP3 ، لذلك لست متأكدًا تمامًا ، ولكن هناك طريقة لتحرير ملف php ذي الصلة مباشرةً (لا أعرف ما إذا كان يمكن القيام به من داخل صفحات Dashboard/Admin) :
wp-folder/wp-content/themes/your-theme/
وفتح header.php
. في هذا الملف ، ابحث عن هذا السطر:
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
لإضافة "إصدار" إلى ورقة الأنماط المرتبطة (على افتراض أنك تريد أن تكون شيئًا مثل: stylesheetURL.css?version=2
) قم بتغييره إلى:
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>?version=2" type="text/css" media="screen" />
هذا نوع من عدم الأناقة ، لذلك ، إذا كان هناك طريقة أفضل أحب أن أسمعها بنفسي =)
لاستخدام ورقة أنماط مختلفة styles-1.css
، يمكنك إما فقط (أعلاه) سطر إلى:
<link rel="stylesheet" href="absolute/or/root-relative/path/to/styles-1.css" type="text/css" media="screen" />
(قم بإزالة الرمز <?php ... ?>
واستبدله بمسار عادي).