質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1753閲覧

PCの画面でもスマホのCSSが優先的に読み込まれるのを解消したい

akkkkin

総合スコア83

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2016/12/17 07:18

編集2016/12/17 07:18

掲題の件で行き詰まっております。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■やったこと
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
互換性のないテーマにwoocommerceのプラグインをいれました。
そして編集するため、下記にCSSをアップロード
/www/hp_sample/wp-content/themes/mytheme/woocommerce/assets/css

そしてmythemeにアップロードしたwoocommerceのCSSをthemeに認識させるため
functions.phpに以下のコードを記述。

function register_style() { wp_register_style('style', get_bloginfo('template_directory').'/style.css'); wp_register_style('woocommerce', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce.css'); wp_register_style('woocommerce-layout', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce-layout.css'); wp_register_style('woocommerce-smallscreen', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce-smallscreen.css'); wp_register_style('shortcode', get_bloginfo('template_directory').'/library/css/shortcode.css'); wp_register_style('slider', get_bloginfo('template_directory').'/library/css/bx-slider.css'); if(!get_option( 'side_options_animatenone' )){ wp_register_style('animate', get_bloginfo('template_directory').'/library/css/animate.min.css'); } wp_register_style('lp_css', get_bloginfo('template_directory').'/library/css/lp.css'); } function add_stylesheet() { register_style(); wp_enqueue_style('style'); wp_enqueue_style('woocommerce'); wp_enqueue_style('woocommerce-layout'); wp_enqueue_style('woocommerce-smallscreen'); wp_enqueue_style('slider'); wp_enqueue_style('animate'); wp_enqueue_style('shortcode'); if(is_singular( 'post_lp' )) { wp_enqueue_style('lp_css'); } elseif (is_home() || is_front_page()) { } } add_action('wp_print_styles', 'add_stylesheet');

woocommerceのプラグインのCSSを読み込まなくするため以下をfunctions.phpに記述

// プラグインのスタイルを読み込まなくする add_filter( 'woocommerce_enqueue_styles', 'jk_dequeue_styles' ); function jk_dequeue_styles( $enqueue_styles ) { unset( $enqueue_styles['woocommerce-general'] ); // Remove the gloss unset( $enqueue_styles['woocommerce-layout'] ); // Remove the layout unset( $enqueue_styles['woocommerce-smallscreen'] ); // Remove the smallscreen optimisation return $enqueue_styles; }

これでスタイルは適用されたが、PCの画面でも
woocommerce-smallscreen.cssがwoocommerce-layout.cssよりも先に読み込まれるため、
PC画面のレイアウトがおかしくなる。

通常ならこのような表示になるはず。

イメージ説明

しかし、PCの画面でもwoocommerce-smallscreen.cssが優先的に読み込まれているので下記のようになる。
イメージ説明

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■class-wc-fronted-scripts.phpあたりがあやしいのですが・・・
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

下記のコードでwoocommerce-smallscreen.cssとwoocommerce-layout.cssを制御しているっぽいのですが、
いかがでしょうか?

/** * Get styles for the frontend. * @access private * @return array */ public static function get_styles() { return apply_filters( 'woocommerce_enqueue_styles', array( 'woocommerce-layout' => array( 'src' => str_replace( array( 'http:', 'https:' ), '', WC()->plugin_url() ) . '/assets/css/woocommerce-layout.css', 'deps' => '', 'version' => WC_VERSION, 'media' => 'all' ), 'woocommerce-smallscreen' => array( 'src' => str_replace( array( 'http:', 'https:' ), '', WC()->plugin_url() ) . '/assets/css/woocommerce-smallscreen.css', 'deps' => 'woocommerce-layout', 'version' => WC_VERSION, 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', $breakpoint = '768px' ) . ')' ), 'woocommerce-general' => array( 'src' => str_replace( array( 'http:', 'https:' ), '', WC()->plugin_url() ) . '/assets/css/woocommerce.css', 'deps' => '', 'version' => WC_VERSION, 'media' => 'all' ), ) ); }

lass-wc-fronted-scripts.phpファイルもmythemeフォルダ内にもってきたのですが、
変わらずPCの画面でもスマホ表示になります。

どこか編集する必要があるのでしょうか?それとも他の問題でしょうか?

以上ご教示いただければありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHP

1 'woocommerce-smallscreen' => array( 2 'src' => str_replace( array( 'http:', 'https:' ), '', WC()->plugin_url() ) . '/assets/css/woocommerce-smallscreen.css', 3 'deps' => 'woocommerce-layout', 4 'version' => WC_VERSION, 5 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', $breakpoint = '768px' ) . ')' 6 ),

と書かれているので、woocommerce-smallscreen.csswp_register_style()するときに、media値を指定しなければいけないのでは?

####追記

PHP

1wp_register_style( 'woocommerce-smallscreen', 2 get_bloginfo('template_directory').'/woocommrce/assets/css/woocommerce-smallscreen.css', 3 array('woocommerce-layout'), 4 false, 5 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', $breakpoint = '768px' ) . ')' );

参考URL:関数リファレンス/wp register style - WordPress Codex 日本語版

wp_register_style( $handle, $src, $deps, $ver, $media );

$media

(文字列|真偽型) (オプション) このスタイルシートが定義されているメディアを指定する文字列。 例: 'all', 'screen', 'handheld', 'print'。
参照:list for the full range of valid CSS-media-types.
初期値: 'all'

投稿2016/12/17 11:26

編集2016/12/20 06:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akkkkin

2016/12/17 11:58

>と書かれているので、woocommerce-smallscreen.cssをwp_register_style()するときに、media値を指定しなければいけないのでは? ご回答ありがとうございます。 media値を指定するというのは下記ではダメなのでしょうか? 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', $breakpoint = '768px' ) . ')' ),
退会済みユーザー

退会済みユーザー

2016/12/17 12:08

> media値を指定するというのは下記ではダメなのでしょうか? > 'media' => 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', $breakpoint = '768px' ) . ')' ), これをfunctions.phpに書いたということですか?
akkkkin

2016/12/17 12:18

回答ありがとうございます。そうです。
退会済みユーザー

退会済みユーザー

2016/12/17 12:26

どのように`functions.php`に書いていらっしゃるのかがわかりませんが、 質問者様が作成した`woocommerce-smallscreen.css`を`wp_register_style()`するときに設定していますか? 単純にWooCommerceの`get_styles()`をfunctions.phpにコピペしてもなんの効果もないと思いますよ。
akkkkin

2016/12/17 12:34

回答ありがとうございます。 >質問者様が作成した`woocommerce-smallscreen.css`を`wp_register_style()`するときに設定していますか? 設定はしたのですが、 class-wc-fronted-scripts.phpを/www/hp_sample/wp-content/themes/mytheme/woocommerce/の中にアップロードしただけでした。 どうやら読み込んでいないっぽいです。。。
akkkkin

2016/12/18 00:50

回答有り難うございます。 誠に恐縮で申し訳ないのですが、記載の仕方としては下記であってますでしょうか? woocommerce-smallscreen.cssのwp_register_styleの箇所に$mediaを記載しました。 ーーーー function register_style() { wp_register_style('style', get_bloginfo('template_directory').'/style.css'); wp_register_style('woocommerce', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce.css'); wp_register_style('woocommerce-layout', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce-layout.css'); wp_register_style($media,'woocommerce-smallscreen', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce-smallscreen.css'); wp_register_style('shortcode', get_bloginfo('template_directory').'/library/css/shortcode.css'); wp_register_style('slider', get_bloginfo('template_directory').'/library/css/bx-slider.css'); if(!get_option( 'side_options_animatenone' )){ wp_register_style('animate', get_bloginfo('template_directory').'/library/css/animate.min.css'); } wp_register_style('lp_css', get_bloginfo('template_directory').'/library/css/lp.css'); } function add_stylesheet() { register_style(); wp_enqueue_style('style'); wp_enqueue_style('woocommerce'); wp_enqueue_style('woocommerce-layout'); wp_enqueue_style('woocommerce-smallscreen'); wp_enqueue_style('slider'); wp_enqueue_style('animate'); wp_enqueue_style('shortcode'); if(is_singular( 'post_lp' )) { wp_enqueue_style('lp_css'); } elseif (is_home() || is_front_page()) { } } add_action('wp_print_styles', 'add_stylesheet'); ーーーーーー
退会済みユーザー

退会済みユーザー

2016/12/18 02:18

違います。 wp_register_styleのWordPress Codexをきちんと読んでください。
akkkkin

2016/12/20 01:51

申し訳ございません。 引数名をそのまま記載するのではなく、デフォルトを記入するということでしょうか? 下記に訂正致しました。いかがでしょうか? 【修正前】 wp_register_style($media,'woocommerce-smallscreen', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce-smallscreen.css'); 【修正後】 wp_register_style('woocommerce-smallscreen', get_bloginfo('template_directory').'/woocommerce/assets/css/woocommerce-smallscreen.css','all');
退会済みユーザー

退会済みユーザー

2016/12/20 03:07

> 引数名をそのまま記載するのではなく、デフォルトを記入するということでしょうか? いいえ。 回答に追記しているとおりです。
akkkkin

2016/12/20 03:48

回答ありがとうございます。 wp_register_style( 'woocommerce-smallscreen', get_bloginfo('template_directory').'/woocommrce/assets/css/woocommerce-smallscreen.css' array('woocommerce-layout'), false, 'only screen and (max-width: ' . apply_filters( 'woocommerce_style_smallscreen_breakpoint', $breakpoint = '768px' ) . ')' ); としているのですが、 syntax error, unexpected 'array' (T_ARRAY)・・・(省略) となりシンタックスエラーになります・・・
退会済みユーザー

退会済みユーザー

2016/12/20 04:09

ああ、二行目にカンマをつけ忘れてますね。つけといてください。
akkkkin

2016/12/20 09:41

つけたらうまく表示できました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問