「カスタムフィールド 表示」の検索結果

15件の結果を表示中 - 1 - 15件目 (全71件中)
  • 投稿者
    検索結果
  • #142416
    アバター画像otomeweb
    参加者
    22

    こちら、やっと購入した、指定のプラグインをつかったのですが
    一覧ページではソートできたものの、ページめくりはかわりませんでした

    どうもページめくりは、ソートとは関係ない?? いや取り出す順番はソートですよね

    ChatGPTで作成したコードだと、次へはOKだけど、前へはダメでした
    アイキャッチが飛ぶのは別に問題なし、なんらかの色にCSSでできれば充分です

    このコードがうまくいったのか分からないのですが参考までにアップします

    — ここから —

    前のコードに戻しつつ、前の項目が常に最初のものになってしまう問題を解決する方法に焦点を当てて修正します。meta_compareやmeta_valueの使い方に加え、カスタムフィールドの順番取得が安定するように再調整します。

    以下は、前々のコードの基本構造を保持しつつ、改善を加えた修正版です。

    // furigana に基づいて次または前の投稿を取得する関数
    function get_adjacent_post_by_furigana($direction = 'next') {
        global $post;
    
        // 現在の投稿の 'furigana' 値を取得
        $current_furigana = get_post_meta($post->ID, 'furigana', true);
    
        // クエリの方向を決定
        $order = ($direction === 'next') ? 'ASC' : 'DESC';
        $comparison_operator = ($direction === 'next') ? '>' : '<';
    
        // furigana のカスタムフィールドを基に前後の記事を取得
        $args = array(
            'post_type' => $post->post_type,
            'posts_per_page' => 1,
            'meta_key' => 'furigana',
            'meta_value' => $current_furigana,
            'meta_compare' => $comparison_operator,
            'orderby' => 'meta_value',
            'order' => $order,
            'meta_type' => 'CHAR',  // furiganaは文字列型として扱う
            'suppress_filters' => false, // カスタム投稿タイプなどに対応
            'fields' => 'ids',  // ID のみを取得
        );
    
        // クエリ実行
        $adjacent_posts = get_posts($args);
    
        // 結果があればその投稿の ID を返す
        if (!empty($adjacent_posts)) {
            return $adjacent_posts[0]; // 次または前の投稿を返す
        }
    
        return null;  // 結果がなければ null を返す
    }
    
    // カスタムフィールド 'furigana' に基づいて前後リンクをカスタマイズする関数
    function custom_adjacent_post_link($output, $format, $link, $post, $adjacent) {
        // クエリの方向を設定
        $direction = ($adjacent === 'next') ? 'next' : 'prev';
    
        // カスタムクエリで次または前の投稿を取得
        $adjacent_post_id = get_adjacent_post_by_furigana($direction);
    
        if ($adjacent_post_id) {
            $adjacent_link = get_permalink($adjacent_post_id);
            $adjacent_title = get_the_title($adjacent_post_id);
    
            // リンクを生成
            $link_format = '<a href="' . esc_url($adjacent_link) . '">' . esc_html($adjacent_title) . '</a>';
            $output = str_replace('%link', $link_format, $format);
        }
    
        return $output;
    }
    
    // フィルターを使用して前後リンクをカスタマイズ
    add_filter('next_post_link', 'custom_adjacent_post_link', 10, 5);
    add_filter('previous_post_link', 'custom_adjacent_post_link', 10, 5);

    改良点の説明

    1. 基本ロジックを保持: 前のコードのロジックを維持し、furiganaカスタムフィールドに基づいた投稿の前後リンクを取得するようにしています。
    2. 前の投稿が最初のものにならないように修正: meta_compareとmeta_valueの使い方を保持しつつ、クエリの順序を適切に調整することで、前の投稿が常に最初のものにならないようにしています。
    3. 最適化のためのフィルタリング: posts_per_pageを1に設定して、常に1件だけ(前または次)の投稿を取得するようにしています。

    デザインに影響しないようなリンク生成

    テンプレートをいじれない前提のため、WordPressのフィルターを使ってnext_post_linkとprevious_post_linkを置き換え、適切に前後のリンクを表示する方法を採用しています。

    動作確認

    これで、前後の投稿がfuriganaカスタムフィールドに基づいて正しく取得されることを期待しています。

    次へは大丈夫ですが、前へがダメです。ただ夜も遅くなったので、いったんここまでにしましょう。もう一歩なのですが

    0
    いいねをした人: 居ません
    アバター画像otomeweb
    参加者
    22

    この件、動作満足しています
    あとはアイコン(公開 or 更新)で付与できればいいのと
    ソート順の確認方法が明確になればいいなと
    管理画面でも更新順のソートができればいいんですよね

    それをいったら50音かなカスタムフィールドでも
    管理画面でも表示できればいいなと思います

    いったん閉じますね 長く引きずってスミマセン

    0
    いいねをした人: 居ません
    #141601

    返信が含まれるトピック: メタディスクリプションが設定できない

    アバター画像キタジマ タカシ
    参加者
    2421

    現状、SEO パネルは、その投稿タイプが「カスタムフィールド」をサポートしている場合にのみ表示されるようになっています。

    ↑のページでいう supportscustom-fields です。

    まずはそこが有効化されているかを確認してみてください。

    0
    いいねをした人: 居ません
    アバター画像キタジマ タカシ
    参加者
    2421

    【お使いの Snow Monkey のバージョン】 最新
    【お使いの Snow Monkey Blocks のバージョン】 最新
    【お使いの Snow Monkey Editor のバージョン】 最新

    後から同じ問題に遭遇した人がこのトピックを参考に自分で解決するときに、バージョンは大事な情報になります。「最新」ではなく実際のバージョン情報を記載するようにお願いします。

    管理画面のテーマファイルエディターからsingle.phpを操作しようとしましたが「このファイルは編集できません」と表示されます。

    テーマファイルエディターから、というより、wp-content/themes/snow-monkey 内のファイルは変更しないほうが良いです。自分以外の誰かが作って配布しているテーマ・プラグインはたまにアップデートがあるわけですが、アップデートするとネット上から最新のファイルをダウンロードしてきて、wp-content の中のファイルを上書きするので、テーマ・プラグインのコードを直接書き換えると上書きされて書いたコードが消えてしまいます。

    テンプレートを上書きしたり、何らかのコードを追加したりしたい場合は子テーマや My Snow Monkey プラグインを使うことを推奨します。

    どの個別詳細ページでも画像を投稿するだけでダウンロードボタンの色や形など全体の仕様を同じにしたい。

    ブロックパターンをつくり、新規投稿のたびにそのパターンを挿入してカスタマイズするのが一般的かなとは思うのですが、パターンは挿入した瞬間に個別のブロックになるので、後から詳細ページのレイアウトを変更したくなったときは全ページの変更が必要になるので大変という問題はあります。

    WordPress 6.6 からは全ページ共通で変更が反映されつつ、ボタンの URL 等は書き換えができる特殊なブロックパターンが追加されるみたいなのですが現状は無いので、適当なカスタムフィールドプラグインを使って画像などはカスタムフィールドに保存しつつ、個別詳細ページのテンプレートを子テーマで上書きして HTML + カスタムフィールドで良い感じにコーディングするとか、カスタムフィールドプラグインにブロックの作成機能も備わっているならそれを使ってみるとか、そういう感じになるかなと思います。

    ———-

    この辺は僕も経験が少ないので、もしやったことがあるという人がいればぜひ書き込んでください!

    1
    いいねをした人:
    #139905
    アバター画像otomeweb
    参加者
    22

    カスタムフィールドつくる方法で作業をはじめました
    ふりがなには初期値で「あ」がはいってます
    一部にフリガナを振りました

    しかしページめくりが変わりません
    投稿一覧と、投稿でのページめくりが混乱しています
    どちらもカスタムフィールドでならべたいです

    コードおかしいところみてもらえますか

    
    /**
    投稿一覧の制御
     */
    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/common/entries/entries',
    	function( $args ) {
    		// 一覧または関連用語のとき
    		if ( 'archive' === $args['vars']['_context'] || 'snow-monkey/related-posts' === $args['vars']['_context'] ) {
    				// 抜粋の表示を有効化
    				$args['vars']['_display_item_excerpt'] = true;
    				// 抜粋の文字数を変更
    				$args['vars']['_excerpt_length'] = 40; // 任意の数値を設定してください
    				// 並び順を変更
    				$args['vars']['_posts_query']->set( 'orderby', 'title' );
    				//$args['vars']['_posts_query']->set( 'meta_key', 'furigana' );
    				//$args['vars']['_posts_query']->set( 'orderby', 'meta_value' );
    				$args['vars']['_posts_query']->set( 'order', 'ASC' );
    				// セットしたクエリーをもとに WP_Query をリセット
    				$args['vars']['_posts_query']->query( $args['vars']['_posts_query']->query_vars );
    		}
    		return $args;
    	}
    );
    
    /**
    投稿の並び順
     */
    function my_orderby_meta_key( $query ) {
      if ( ! is_admin() ) {
        if( $query->is_main_query() ) {
          if( $query->is_post_type('post') ) {
            $query->set( 'meta_key', 'furigana' ); // ふりがなのカスタムフィールド名
            $query->set( 'orderby', 'meta_value' );
            $query->set( 'order', 'ASC' );
            $query->set( 'post_type', array( 'post' ) );
          }
        }
      }
    }
    add_action( 'pre_get_posts', 'my_orderby_meta_key' );
    
    0
    いいねをした人: 居ません
    #138979
    アバター画像キタジマ タカシ
    参加者
    2421

    ひとまず。

    /**
     * 著者ページのメインクエリを書き換える
     */
    add_action(
    	'pre_get_posts',
    	function( $query ) {
    		if ( is_author() && $query->is_main_query() ) {
    			$query->set( 'post_type', 'news' );
    		}
    	}
    );
    
    /**
     * 著者ページのコンテンツの先頭にプロフィールを表示
     */
    add_action(
    	'snow_monkey_prepend_archive_entry_content',
    	function() {
    		if ( is_author() ) {
    			$user_id = get_query_var( 'author' );
    			$user    = get_userdata( $user_id );
    			if ( !empty( $user->description ) ) {
    				echo '<div>' . wp_kses_post( $user->description ) . '</div>';
    			}
    		}
    	}
    );

    あとはカスタムフィールドの値をどこに表示するかで、どのテンプレートを上書きするかを検討して…という感じですかね。ループ内の各項目を丸ごとなら template-parts/loop/entry-summary、ループ内の各項目の本文部分だけで良いなら template-parts/loop/entry-summary/content/content とかですね。

    1
    いいねをした人:
    アバター画像キタジマ タカシ
    参加者
    2421

    カスタムフィールドブロックを使って出力していますが、他のフィールドは問題なく出力されており、テーブルの料金表のみが「Array」と出力されてしまいます。

    この「カスタムフィールドブロック」というのは Snow Monkey Blocks のカスタムフィールドブロックのことですかね?

    だとした場合、Snow Monkey Blocks のカスタムフィールドブロックは値として文字列がくることを期待しているため、配列がくると正しく表示することができません。

    Advanced Custom Fields の Table Field がどのような値を持っているかはわからないので具体的なコードは提示できませんが、カスタムフィールドブロックにはフックがあって値を操作して出力することができるので、そこで表の形に整形して出力すればいけるのかなとは思います。

    // name が「あいうえお」なカスタムフィールドの値を書き換えて出力する
    add_filter(
    	'snow_monkey_blocks_custom_field_value_あいうえお'
    	function( $value ) {
    		// ここで $value を書き換えて return する
    		return $value;
    	}
    );

    ただ、結構大変そうな気はするので、ACF のほうに表の形で出力する何らかの機能があるのであれば、それを使うのが良いと思います。

    1
    いいねをした人:
    shone
    参加者
    47

    >GONSYさん

     

    返信いただきありがとうございます!

    またカスタムフィールドを使用したアドバイスありがとうございます!

     

    カスタム投稿タイプを使用することが前提であれば、私の場合は、カスタムフィールド + 独自のテンプレートを用意するか、該当のカスタム投稿タイプのみカスタムフィールドを表示できるようにフックで挿入します。

     

    ただ、まさに今現在がカスタムフィールドで構築された投稿をフルリニューアルしているところでして、現行の投稿がカスタムフィールドを多用しすぎて動作が重くなりがちなこと(+将来に渡って今後も商品が増えることを考えると今より重くなることはあっても軽くなることは基本的に無いこと)と、カスタムフィールドを使用しすぎて一覧性がかえって悪くなり、入力フォームを制限できること以外のメリットが薄い(デメリットのほうが目立ってきた)という事情がありまして…

     

    それならいっそブロックエディタで構築したものをテンプレート化してパターンに登録・いつでも呼び出せるようにしたほうが、見た目ほぼそのままに編集できるので項目ごとの関係や意図を理解しやすく、今まで編集をしたことがない人間でも一度覚えてしまえば編集しやすいかなと思い今回はブロックエディタを再投資ております。

    ですので、更新性は担保しつつ極力入力の手間や思考を省いた形式にはおおむねできているのですが、関連商品(関連記事)の設定時をいかにシンプルにするか?が目下の課題と言うことで、URLを直接貼り付けるだけのブログカード(「埋め込み」)形式が楽なのかなと考えた次第です。

    そのため、ブログカードの見た目を整えたいというのが要望でした…!

    0
    いいねをした人: 居ません
    GONSY
    参加者
    841

    1000点以上の商品情報をブロックエディターで運用するのは、なかなか大変かと思います。
    カスタム投稿タイプを使用することが前提であれば、私の場合は、カスタムフィールド + 独自のテンプレートを用意するか、該当のカスタム投稿タイプのみカスタムフィールドを表示できるようにフックで挿入します。

    この方法がベストではありませんが、HTMLの自由度は高くなるので、別のトピック(以下)の件も解消しやすいと思います。

     
     
    カスタムフィールドは、Advanced Custom Fields を使えば、【関係(旧:関連)フィールド】で、複数の投稿を紐づけられます。
    ※投稿タイプでフィルタリングできるので「商品」の中から選択するたけでOKです。
    ※検索窓もついているので、商品名などで検索→選択することも可能です。
     
    カスタムフィールドを多用するのはあまり好ましくありませんが、「クライアント側での更新作業のし易さ」という点では、実用的な面もあります。


    いま制作しているセレクトショップの商品情報は、ACF Proを使用しています。
    「Recommend item」に【関係(旧:関連)フィールド】で、6つまで選択できるようにして、各商品のアイキャッチを表示するようにしています。
    【関係(旧:関連)フィールド】は、無料版でも使えるので、案件のポリシーに反していないようなら検討してみてください。

    2
    いいねをした人:
    アバター画像キタジマ タカシ
    参加者
    2421

    カスタムフィールドにはどのようなデータでも保存できるので、Snow Monkey Blocks のカスタムフィールドブロックでは表示したいカスタムフィールドの指定だけをして、シンプルにそれを出力する、という仕様にしています。

    確かにフォーマットを選択できる UI があれば便利かなとは思いますが、あらゆるフォーマットを追加し続けないといけなくなりそうなので、どういう UI が適切か(または僕の技術力的に可能なのか)が難しいかなと感じます。

    一応フィルターフックが通るようにはしているので、コードを書けば好きなフォーマットで出力することは可能です。

    add_filter(
    	'snow_monkey_blocks_custom_field_value_カスタムフィールド名',
    	function( $value, $post_id ) {
    		return $value; // ここで好きなフォーマットに変換して返す
    	}
    );
    2
    いいねをした人:
    tatsumi-web
    参加者
    2

    ご連絡ありがとうございます。
    該当箇所と思われる、商品紹介部分の商品A、商品Bの2ヶ所の画像に横幅と高さを指定してみました。
    その後、動作確認いたしましたが、状況に変化はありませんでした。

    【該当箇所の記述】

    
    <figure class="wp-block-image aligncenter size-full sme-animation-fade-in">
    <img decoding="async" src="●●.png" alt="●●"  width="916" height="492"/>
    </figure>
    

    ※関係ないかもしれませんが、こちらの画像は、カスタムフィールドスイーツと連動させ、ショートコードにて表示させております。

    0
    いいねをした人: 居ません
    #133708
    アバター画像キタジマ タカシ
    参加者
    2421

    Snow Monkey Blocks のカスタムフィールドブロックはカスタムフィールドへの「入力」はできず、あくまで「表示」のみとなります。なので WordPress のカスタムフィールドパネルなどから別途入力が必要になります。

    0
    いいねをした人: 居ません
    akosan
    参加者
    31

    ありがとうございます。その後いろいろ調べながらやってみたのですが実現できず、とん挫しています。

    エラーメッセージが出たので

    }
    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
    );
    0
    いいねをした人: 居ません
    sususu
    閲覧者
    10

    お世話になっております。

    お忙しい中、検証いただき誠にありがとうございます。

    
    
    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が出てきてしまっていますが、ページ指定で非表示にすればいけそうです。

     

    また試してみて報告させていただきます。

    アドバイスいただき、ありがとうございます。

    0
    いいねをした人: 居ません
    sususu
    閲覧者
    10

    キタジマさん、早速のご返信ありがとうございます。

    カスタム投稿アーカイブの一覧部分と全く同じデザインの一覧を、特定の固定ページにも表示させたいということでしょうか?

    はい、そのように表示したいです。

    //////////////////////////////////////
    // カスタム投稿ページにカスタムフィールドを表示
    //////////////////////////////////////
    add_filter(
    	'snow_monkey_template_part_render_template-parts/content/entry/content/content',
    	function ($html) {
    		if (get_post_type() === 'propertys') {
    			// カスタムフィールドで設定したフィールド名を代入
    			$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');
    			$acf_property_info =
    '<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>';
    
    			$html = $acf_property_info;
    		}
    
    		return $html;
    	}
    );
    
    ////////////////////////////////////////////
    // カスタム投稿のアーカイブページにカスタムフィールドを表示
    ////////////////////////////////////////////
    add_filter(
    	'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title',
    	function ( $html ) {
    		if( is_post_type_archive('propertys') ){
    			// カスタムフィールドで設定したフィールド名を代入
    			$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');
    
    			// テンプレートのh2タグの後に <div class="property-info">を追加
    			$acf_property_info = '</h2><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>';
    
    			// テンプレートパーツのh2タグの後ろにdivタグを追加する
    			$html = str_replace(
    				'</h2>',
    				$acf_property_info,
    				$html
    			);
    		}
    		return $html;
    	}
    );

    アーカイブページの見た目がこちらで(この画像の上にセクションのタイトルがあります)

    ・実際に他の固定ページで「最近の投稿」ブロックを使用した見た目が

    ↓↓↓

    アイキャッチ画像を仮に抜くと上記添付画像の左上のように何も画像が表示されません。
    画像に関してはアイキャッチ画像とカスタムフィールドの画像を合わせれば良いのですがテキストなどをこちらにも紐付けさせることは可能でしょうか。

    お忙しい中大変恐れ入りますが、よろしくお願いいたします。

    0
    いいねをした人: 居ません
15件の結果を表示中 - 1 - 15件目 (全71件中)

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。