it-swarm.asia

كيف يمكنني إصدار ملف CSS الرئيسي؟

كيف يمكنني توجيه ووردبريس لاستخدام اسم ملف آخر غير "styles.css" في ورقة أنماطي الرئيسية - على سبيل المثال ، Styles-1.css؟ أود القيام بذلك لأغراض تعيين الإصدار والتخزين المؤقت.

7
Bobby Jack

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 تمامًا.

3
EAMann

قد يكون هذا غير مناسب ، فالرجاء إخبارنا إذا فاتني شيء ما.

الوسيطة الرابعة إلى 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.

13
Annika Backstrom

قم بإسقاط هذا في ملف الوظائف الخاص بك.

function my_cool_style_versioner( $style ){
  return str_replace( '/style.css', '/style-1.css', $style );
}

add_filter( 'stylesheet_uri', 'my_cool_style_versioner' );
3
John P Bloch

لاحظ أنك لا يجب عليك استخدام querystrings لإصدار الملفات (لا تقوم الوكلاء بتخزينها مؤقتًا).

هناك طريقة أفضل لإصدار أسماء الملفات مثل إضافة رقم مثل

  • style. 123 . css
  • style. 124 . css

لذلك منهجي هو ما يلي:

اباتشي htaccess يعيد توجيه

إذا كنت تستخدم 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>

functions.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');
3
Alexander Taubenkorb

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

3
Paul Sheldrake

حسنًا ، يمكنك ببساطة استخدام style.css كمكان للاتصال بالنسخة التي تريدها. ببساطة

@import url("style-1.css");

ثم عندما تقوم بترقية إصدار ، فقط قم بتحريره ليكون:

@import url("style-2.css");

بالنسبة إلى حفظ الإصدارات ، هل فكرت في استخدام التخريب ، أو بوابة ؟ بعد ذلك ، يمكنك الحصول على سجل كامل لورقة الأنماط الخاصة بك. من الممكن أنني لا أفهم تمامًا الأسباب الكاملة لإصدارك.

2
artlung

صادفت هذا السؤال القديم ووجدت كل الإجابات تبدو قديمة في هذه الأيام.

أود ببساطة استخدام إصدار السمة كما هو محدد في جزء رأس ملف 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.

2
JHoffmann

في functions.php التغيير

wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri();

إلى

wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri(), array(), $ver );

قم بتغيير $ver إلى أي قيمة ، أو time() لوضع التطوير.

1
Rashed Hasan

لست متأكدًا مما إذا كان هذا قد تغير بالنسبة إلى 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 ... ?> واستبدله بمسار عادي).

0
David Thomas