ご教授いただきましてありがとうございます。
私の知識が足りず、どうしても上手くいきません・・・
お忙しいところ質問を重ねまして申し訳ございません。
タブレットの場合ではなく、「スマホの場合か、ウィンドウサイズ680以上の場合 」で設定する場合なら、どのようなコードになりますか?
add_filter(
‘snow_monkey_template_part_render_template-parts/common/head’,
function( $html ) {
// 既存のメタタグを削除
$html = preg_replace( ‘|<meta name=”viewport”[^>]+?>|s’, ”, $html );
if ( スマホの場合か、ウィンドウサイズ680以下の場合に限り ) {
// メタタグを追加
$html .= ‘<meta name=”viewport” …省略…>’;
} else {
// それ以外
$html .= ‘<meta name=”viewport” …省略…>’;
}
return $html;
}
);
取り急ぎfunction add_meta_in_head() 〜でviewportの書き換えをしようとしてみましたが、
教えていただいたviewport 用メタタグを消すコードが干渉して、
<meta name=”viewport”〜
が消えてしまいます・・・
メタタグを消す関数とメタタグを追加する関数を別々にせずに、同じ関数内で処理すれば大丈夫なのではないかと思います。
初歩的な質問で申し訳ございませんが、
・タブレットの場合だけ:<meta name=”viewport” content=”width=1280″>
・それ以外の場合は置き換えない
といったことは可能でしょうか?
「タブレットの場合だけ」をどうやって判定するのかちょっと僕もわからないのですが、コード的には下記のような感じになると思います。
add_filter(
'snow_monkey_template_part_render_template-parts/common/head',
function( $html ) {
// 既存のメタタグを削除
$html = preg_replace( '|<meta name="viewport"[^>]+?>|s', '', $html );
if ( タブレットの場合 ) {
// メタタグを追加
$html .= '<meta name="viewport" ...省略...>';
} else {
// それ以外
$html .= '<meta name="viewport" ...省略...>';
}
return $html;
}
);
viewport を書き換えるという発想がなく、この部分には特に専用のフックなどは用意されていないため、やるなら HTML を書き換えるフックで書き換える形になるかなと思います。
とりあえず下記で既存の viewport 用メタタグは消えるかと思います。
add_filter(
'snow_monkey_template_part_render_template-parts/common/head',
function( $html ) {
$html = preg_replace( '|<meta name="viewport"[^>]+?>|s', '', $html );
return $html;
}
);
あとは js でやっても良いし、ユーザーエージェントで判定させるなら PHP でもできると思うので、PHP で追加しても良いのかなと思います。
【お使いの Snow Monkey のバージョン】
【お使いの Snow Monkey Blocks のバージョン】
【お使いの Snow Monkey Editor のバージョン】
【お使いのブラウザ】
【当該サイトのURL】
### 実現したいこと
記事一覧ページ(投稿タイプ甲)を作成しています。
甲にはタクソノミーA、タクソノミーBが表示されています。
アーカイブ甲は、上からAの記事が5つ、その下にBの記事が5つ並んでおり、
アーカイブ甲の中で、タクソノミーAの先頭に見出し①、タクソノミーBの先頭に見出し②を追加したいです。
### 発生している問題
### 試したこと
以下のアクションフックを試した
snow_monkey_template_part_render_template-parts/archive/entry/header/header
snow_monkey_get_template_part_args_template-parts/loop/entry-summary/term/term
add_filter(
'snow_monkey_template_part_render_template-parts/archive/entry/header/header',
function ( $html ) {
if ( is_tax('sales') ) {
$html = preg_replace(
'|(<h1 class="c-entry__title">.*?</h1>)|ms',
'<h1 class="c-entry__title">役員</h1><p>役員についての説明文</p>',
$html
);
}
return $html;
}
);
↑のようなコードを使うのかなと予想は立っているのですがほとんど解決案が出てきません。
何卒お力添えよろしくお願い申し上げます。
一応検証済みですが、ほかに影響が出ないとも言えません。
まずはローカル環境などで試してみてください。
/**
* ページタイトルを任意の名前に変更
* <h1 class="c-entry__title">ここ</h1>
*/
add_filter(
'snow_monkey_template_part_render_template-parts/archive/entry/header/header',
function ($html) {
$category_titles = array(
'カテゴリAのスラッグ' => 'Works',
'カテゴリBのスラッグ' => 'Profile'
);
$category_slug = get_query_var('category_name');
if (array_key_exists($category_slug, $category_titles)) {
$html = preg_replace(
'|(<h1 class="c-entry__title">.*?</h1>)|ms',
'<h1 class="c-entry__title">' . $category_titles[$category_slug] . '</h1>',
$html
);
}
return $html;
}
);
/**
* メタタイトルを任意の名前に変更
* <title>ここ - サイト名</title>
*/
add_filter(
'single_cat_title',
function ($title) {
$category_titles = array(
'カテゴリAのスラッグ' => 'Works',
'カテゴリBスラッグ' => 'Profile'
);
$category_slug = get_query_var('category_name');
if (array_key_exists($category_slug, $category_titles)) {
$title = $category_titles[$category_slug];
}
return $title;
}
);
【お使いの Snow Monkey のバージョン】
【お使いの Snow Monkey Blocks のバージョン】
【お使いの Snow Monkey Editor のバージョン】
【お使いのブラウザ】
【当該サイトのURL】
### 実現したいこと
カスタム投稿タイプのアーカイブページにて、サムネイル画像をクリックしたときにカスタム投稿タイプで追加したファイル(PDF)のURLを取得し開くようにしたい。
### 発生している問題
PDFのURLを取得できず、カスタム投稿ページが開いてします。
### 試したこと
Advanced Custom Fieldsを使って、カスタムメニューを追加しています。
ファイルのフィールド名・・・pdf
返り値・・・ファイルの URL
アーカイブページのスラッグ・・・report
下記のようにコードをmy-snow-monkey.php
に記載していますが、うまく実現できません。
アドバイスをいただけると幸いです。
お手数をおかけしますが宜しくお願い致します。
// カスタム投稿タイプアーカイブページ_サムネイル画像のリンクをPDFファイルURLに書き換えたい
add_filter(
'snow_monkey_template_part_render_template-parts/loop/entry-summary/figure/figure',
function ( $html ) {
// 「report」のアーカイブページだけに適用
if ( is_post_type_archive( 'report' ) ) {
// カスタムフィールドの値を取得
$filefiled= get_field('pdf');
// サムネイルを変更
if ( ! empty( $filefiled ) ) {
$html = str_replace( 'src="' . get_the_post_thumbnail_url($filefiled) . '"', 'src="' . '"', $html );
}
}
return $html;
}
);
My Snow Monkey(my-snow-monkey.php
)もしくは子テーマの functions.php
に以下のコードを追加すると、該当箇所(のテンプレート)は読まれなくなると思います。
add_filter(
'snow_monkey_template_part_render_template-parts/common/overlay-search-box',
'__return_false'
);
ほかに不具合が発生するか未検証ですが、一度お試しください。
「新しく投稿されたものに関してはカテゴリラベルのところにNewマークがつくようにする」は以下のコードを加えました。
すでに「NEW」が表示されているということですね。
私がやるとすれば、サムネイル上の「NEW」以外のカテゴリー名はCSS( display: none
)で消します。
ご提示のコードの場合、該当の要素に my-new
がついていると思いますので、そこだけ強制的に表示させます。
.c-entries .c-entry-summary__term {
display: none;
}
.c-entries span[class*="my-new"] {
display: block!important;
}
カテゴリーの表示は、位置をCSSで移動させるのがちょっと嫌なので、フィルターフック snow_monkey_template_part_render_template-parts/loop/entry-summary
で </header>
の後に replace
を使ってリンクなしのカテゴリーを表示するようにしてあげれば、それっぽい感じになると思います。
add_filter(
'snow_monkey_template_part_render_template-parts/loop/entry-summary',
function( $html ) {
$category = get_the_category();
$cat_name = $category[0]->cat_name;
$html = str_replace(
'</header>',
'</header><p class="cat_name_origin"><span>'. $cat_name. '</span></p>',
$html
);
return $html;
}
);
もっとスマートな方法もあるかと思いますが、1つの例として参考にしていただければと思います。
どこまでがうまくいっていて、どこからがうまくいっていないのかがわからないので、適当なところで var_dump()
して問題を把握すると良いかもしれませんね。
add_filter(
// template-parts/loop/entry-summary を書き換える
'snow_monkey_template_part_render_template-parts/loop/entry-summary',
function( $html, $name, $vars ) {
// 「シンプル」のときだけ実行
var_dump( $vars['_entries_layout'] );
if ( 'simple' === $vars['_entries_layout'] ) {
// カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする
// ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。
$course_types = get_field( 'course_type' );
var_dump( $course_types );
ob_start();
foreach ( $course_types as $course_type ) {
echo '<span>' . $course_type . '</span>';
}
$course_type_html = ob_get_clean();
var_dump( esc_html( $html ) );
return str_replace(
'</section>',
$course_type_html . '</section>',
$html
);
}
return $html;
},
10,
3
);
ありがとうございます。その後いろいろ調べながらやってみたのですが実現できず、とん挫しています。
エラーメッセージが出たので
}
return $html;
を追加してエラーは出なくなったのですが表示はできずでした。
Advanced Custom Fieldsの関数get_fieldを使えばいいのでは?と思い変更したのですがそれではダメでした。※get_post_metaでも出来るようでしたが
https://lucy.ne.jp/bazubu/advanced-custom-fields-36452.html
add_filter(
// template-parts/loop/entry-summary を書き換える
'snow_monkey_template_part_render_template-parts/loop/entry-summary',
function( $html, $name, $vars ) {
// 「シンプル」のときだけ実行
if ( 'simple' === $vars['_entries_layout'] ) {
// カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする
// ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。
$course_types = get_field( 'course_type' );
ob_start();
foreach ( $course_types as $course_type ) {
echo '<span>' . $course_type . '</span>';
}
$course_type_html = ob_get_clean();
return str_replace(
'</section>',
$course_type_html . '</section>',
$html
);
}
return $html;
},
10,
3
);
\Framework\Helper::get_template_part( 'template-parts/loop/entry-summary/term/term' ... );
はターム(カテゴリー等)の一覧を取得するものなので、「ここをカスタムフィールドを取得して HTML を生成・加工する」というコードに書き換えればよいのかなと思います。
僕は ACF に詳しくないのと、実際に course_type
にどのような値が入っているかがわからないのであくまでサンプルですが、だいたい下記のような感じになるのかなと思います。
add_filter(
// template-parts/loop/entry-summary を書き換える
'snow_monkey_template_part_render_template-parts/loop/entry-summary',
function( $html, $name, $vars ) {
// 「シンプル」のときだけ実行
if ( 'simple' === $vars['_entries_layout'] ) {
// カスタムフィールドを取得して、それをもとに加工した HTML をバッファリングする
// ACF や実際に保存されているデータの構造がわからないので実際の状況にあわせて書き直してください。
$course_types = get_post_meta( get_the_ID(), 'course_type' );
ob_start();
foreach ( $course_types as $course_type ) {
echo '<span>' . $course_type . '</span>';
}
$course_type_html = ob_get_clean();
return str_replace(
'</section>',
$course_type_html . '</section>',
$html
);
},
10,
3
);
【お使いの Snow Monkey のバージョン】バージョン: 20.0.2
【お使いの Snow Monkey Blocks のバージョン】バージョン 19.2.1
【お使いの Snow Monkey Editor のバージョン】バージョン 9.2.1
【お使いのブラウザ】Google Chrome
【当該サイトのURL】https://sora-sanpo.com/_lib/lesson/
### 実現したいこと
任意のタクソノミーの投稿を表示させたときカスタムフィールドの値を表示させたい
現在はカテゴリーを表示させているのですが変更することになり、カスタムフィールドに入力した値を表示させることになりました。
赤枠の所が現在カテゴリーを表示させているのですがそれをやめて、カスタムフィールドに入力した値を同じようなデザインで表示させたい。
プラグインAdvanced Custom Fieldsでカスタムフィールドを設定。
タイプはセレクトボックスを使用。
フィールド名
course_type
値
movie:動画
meet:対面
certified:認定講座
### 発生している問題
表示できない
### 試したこと
過去フォーラムを参照
トップページの最近の投稿ブロックにカスタムフィールドの値とタイトルを表示したい
前回似た質問したときのトピック
任意のタクソノミーの投稿の特定の場所にカテゴリーを表示させたい
以前教えていただいたコードを変更して対応しようとしましたが力不足でできませんでした。
お忙しいところ申し訳ありませんがご教示いただけると幸いです。
現在はMySnowMonkeyにて教えていただいた下記コードを書きこんで表示しています。
/**
* レッスン一覧のカテゴリーラベルの表示
*/
add_filter(
// template-parts/loop/entry-summary を書き換える
'snow_monkey_template_part_render_template-parts/loop/entry-summary',
function( $html, $name, $vars ) {
// 「シンプル」のときだけ実行
if ( 'simple' === $vars['_entries_layout'] ) {
// カテゴリーラベルを取得して、各項目の最後に追加する。
ob_start();
\Framework\Helper::get_template_part(
'template-parts/loop/entry-summary/term/term',
$name,
array(
'_context' => $vars['_context'],
'_terms' => $vars['_terms'],
)
);
$terms = ob_get_clean();
return str_replace(
'
',
$terms . '
',
$html
);
}
return $html;
},
10,
3
);
お世話になっております。
お忙しい中、検証いただき誠にありがとうございます。
add_filter(
'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
function ( $html, $name ) {
if ( is_page( 47 ) ) {
// カスタムフィールドで設定したフィールド名を代入
$acf_image = get_field('property_image');
$acf_type = get_field('property_type');
$acf_location = get_field('property_location');
$acf_price = get_field('property_price');
$acf_land_area = get_field('property_land_area');
// テンプレートのh3タグの後に<div class='property-info'>を追加
$acf_property_info = '</h3>
<div class="property-info">' .
'<div class="property-img"><img src="' . esc_url($acf_image) . '" alt="Image"></div>' .
'<div class="property-body">' .
'<div class="property-tag">' .
'<p>' . esc_html($acf_type) . '</p>' .
'</div>' .
'<div class="property-content">'.
'<p class="location">' . esc_html($acf_location) . '</p>' .
'<p class="price">' . esc_html($acf_price) . '</p>' .
'<p class="land_area">' . esc_html($acf_land_area) . '</p>' .
'</div>' .
'</div>' .
'</div>';
// テンプレートパーツのh3タグの後ろにdivタグを追加する
$html = str_replace(
'</h3>',
$acf_property_info,
$html
);
}
return $html;
},
10,
2
);
このように記述しました。
アイキャッチとタイトルが表示されてしまいますが、こちらはdisplay: none;で消してしまえばいけそうです。
同じページに投稿ページの最新の投稿もブロックで使っていたので
こちらもimageが出てきてしまっていますが、ページ指定で非表示にすればいけそうです。
また試してみて報告させていただきます。
アドバイスいただき、ありがとうございます。
ちょっと実際にどういう値が入ってきているのか確認したいので、コードを下記のように改変して、固定ページでどのような値が表示されるか教えてください!
add_filter(
'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
function ( $html, $name ) {
var_dump( $name );
var_dump( get_post_type() );
if ( 'propertys' === $name ) {
// 〜前後省略〜
},
10,
2
);