サポート » 使い方全般 » PHPの条件分岐の書き方 〜 ターム名ラベル表示させたい

  • 解決済 maronmaron

    (@maronmaron)


    現在ローカル環境でカスタマイズを行っているため、リンクが記載できません。
    ご了承ください。

    【概要】
    テーマ「SWELL」にて、カスタム投稿タイプを複数追加しました。
    記事一覧ページにて、“通常投稿”では表示されるサムネイルの右肩のカテゴリー名ラベルが、
    “カスタム投稿”の一覧には表示されません。

    カスタム投稿の記事一覧で”カスタムタクソノミー”のタームラベル名が表示される様にしたいのが今回の目的です。

    ※SWELL公式フォーラムでは、こういったカスタマイズはサポート外なので質問できません。
    ※一部有料記事もありましたが、コチラでお力を貸し手頂ければとトピックを立てました。
    ※プログラム未経験ですが、ググった情報を元にPHPを編集する位の事は出来ます

    【質問】
    調べたところ、2つのPHPファイルが「サムネイル上のカテゴリー名表示」に関係していることが分かりました。

    ■thimb.php

    <?php
    if ( ! defined( 'ABSPATH' ) ) exit;
    
    $the_id    = $variable['post_id'] ?? get_the_ID();
    $sizes     = $variable['sizes'] ?? '(min-width: 960px) 960px, 100vw';
    $size      = $variable['size'] ?? 'full';
    $lazy_type = $variable['lazy_type'] ?? SWELL_Theme::$lazy_type;
    $decoding  = $variable['decoding'] ?? false;
    $cat_pos   = $variable['cat_pos'] ?? 'none';
    $cat_data  = $variable['cat_data'] ?? []; // 後方互換用
    
    ?>
    <div class="p-postList__thumb c-postThumb<?php echo ! has_post_thumbnail( $the_id ) ? ' noimg_' : ''; ?>">
    	<figure class="c-postThumb__figure">
    		<?php
    			SWELL_Theme::get_thumbnail( [
    				'post_id'   => $the_id,
    				'size'      => $size,
    				'sizes'     => $sizes,
    				'lazy_type' => $lazy_type,
    				'decoding'  => $decoding,
    				'class'     => 'c-postThumb__img u-obf-cover',
    				'echo'      => true,
    			] );
    		?>
    	</figure>
    
    	<?php
    		if ( 'on_thumb' === $cat_pos || ! empty( $cat_data ) ) :
    			SWELL_Theme::pluggable_parts( 'post_list_category', [
    				'post_id' => $the_id,
    				'class'   => 'c-postThumb__cat',
    			] );
    
    		endif;
    	?>
    </div>
    

    このコードの下の部分

    <?php
    		if ( 'on_thumb' === $cat_pos || ! empty( $cat_data ) ) :
    			SWELL_Theme::pluggable_parts( 'post_list_category', [
    				'post_id' => $the_id,
    				'class'   => 'c-postThumb__cat',
    			] );
    
    		endif;
    	?>

    コチラがカテゴリーラベルの表示をしているPHP

    ■list_parts.php

    /**
     * 記事リストのカテゴリー
     */
    if ( ! function_exists( 'swl_parts__post_list_category' ) ) :
    	function swl_parts__post_list_category( $args ) {
    		$the_id   = $args['post_id'] ?? get_the_ID();
    		$class    = $args['class'] ?? 'p-postList__cat u-thin';
    		$cat_data = get_the_category( $the_id );
    		if ( empty( $cat_data ) ) {
    			return;
    		}
    
    

    そしてこちらが、リスト情報を広う関数?が設定されている部分(だと思います)

    【試した事】
    表示させたいタームがあるタクソノミー名を
    「item」
    としたとします。

    /**
     * 記事リストのカテゴリー
     */
    if ( ! function_exists( 'swl_parts__post_list_category' ) ) :
    	function swl_parts__post_list_category( $args ) {
    		$the_id   = $args['post_id'] ?? get_the_ID();
    		$class    = $args['class'] ?? 'p-postList__cat u-thin';
    		$cat_data = get_the_category( $the_id );
    		if ( empty( $cat_data ) ) {
    			return;
    		}
    
    

    こちらのコードの
    “$cat_data = get_the_category( $the_id );”

    “$cat_data = get_the_terms( $the_id, ‘item’ );”

    とすると、カスタム投稿の記事一覧にターム名ラベルが表示されました。
    ですが、一般投稿のカテゴリー名ラベルは消えました。

    ここから先で躓いています。

    【予想】

    恐らく上記コード内で elseifの条件分岐を使えばいいのか?
    と考えたのですが、その方法が良く分かりません。

    いくつかのコードを試しましたが無理でした。

    //////////

    なにかヒントやコードを思い付かれる方がいらしたら、ご教授頂けると嬉しいです。
    よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • その有料記事だけでは解決できないのでしょうか?
    または有料記事の販売者にカスタマイズを依頼できませんか?

    この手のご質問は無料で回答できる範囲を超えていると思います。そのため手っ取り早く有料で解決してしまうことをおすすめします。

    トピック投稿者 maronmaron

    (@maronmaron)

    こちらでも、コメントありがとうございます。

    WPのサポートフォーラムでは多岐にわたる質問が繰り広げられておりますので、質問させて頂きました。
    有識者の方のアドバイスがあればと思っております。

    有料サポートを受ければ簡単なのは承知しております。
    が、殆どの有料テーマ購入者は企業案件で無い限り高額な有料サポートを利用しようとは思いません。
    と言うのが僕の考えです。
    (高額かどうかの判断は状況に応じて解釈が変わりますが)

    また、現在の僕のカスタムは、実際に公開するかどうかまだ未定のサイトです。
    しかも完全な個人の趣味の範疇です。

    カスタム投稿を使う事もまだ未定です。
    一つの可能性としてカスタム投稿を使った場合の運用面やデザイン的な問題点を見つけるために、現在カスタムを行っております。ある種の実験です。
    なので自力で頑張っているという訳です。

    また、自身の勉強のためにも、このように質問をしております。
    “有料サポートで手っ取り早く”というスタンスには慣れないのが現状です。

    ご理解頂けますと幸いです。

    殆どの有料テーマ購入者は企業案件で無い限り高額な有料サポートを利用しようとは思いません。

    一応SWELLは某有料テーマよりカスタマイズしやすいですが、有料テーマ購入の意味はカスタマイズ負担を減らすメリットがあると思います。なので一番のおすすめはカスタマイズしない事でしょうか。または他にカスタマイズしても動作しやすい有料テーマがあれば、そちらを利用する方法もあると思います。

    なおフォーラムのメリットとして無料で回答があった場合はその解決策も他のユーザーに共有するというルールとまではいかないものの、オープンソースのあり方みたいな解釈があるのでもし解決されたらぜひ解決策もご投稿ください。

    以下追記。

    また、現在の僕のカスタムは、実際に公開するかどうかまだ未定のサイトです。
    しかも完全な個人の趣味の範疇です。

    理由がどうであれ、他人が培った知識を求める場合には一般的に対価が必要です。例えサイトがボランティアだとしても、ボランティアをするのは依頼主であり、依頼主とは別の第三者が技術を提供するのは必ずしもボランティアである必要がないためです。

    こちらの投稿はすでにWPプラグイン開発をされたり、制作にかかわる方々も目に通しており厳しい意見が寄せられています。なかなか難しい状況とは思いますが、頑張って解決を目指してください!

    • この返信は1年、 9ヶ月前にskillsharejpが編集しました。

    条件分岐タグ – WordPress Codex 日本語版

    上記サイトのis_singular()あたりを使ってみては如何ですか?

    トピック投稿者 maronmaron

    (@maronmaron)

    貴重なご意見ありがとうございます。

    テーマカスタマイズに関する「対価」は、確かに仰る通りの一般概念ですが、
    エンジニアではない一般消費者には、
    それが、「有料で対応してもらうべき内容」なのかどうかが分からないと言うのが現実です。

    また、相場も良く分からないのです。
    ココナラで相談したら、20〜30万という返答がきました。厳しい・・・(笑)

    他テーマでは、コアカスタムの情報がネットに溢れておりますが、SWELLではほぼ皆無に近い状態ですので、
    今後同じ様な壁に遭遇される方の為に、SWELLフォーラムやWPフォーラムでトピックを立てさせて貰っています。

    これがエンジニアの方のお仕事を奪うことになるという側面は否定できませんが、有料テーマを買う大多数の僕を含む”素人”の方に有益な情報になればと思っています。

    この件に関しては、立場によって差違があると思いますので、これで終了しましょう!

    ありがとうございました。

    ///
    それから、このカスタマイズは本日自己解決しました。
    コード 1行で完結しました。。
    フォーラムの方にシェアする予定です。

    トピック投稿者 maronmaron

    (@maronmaron)

    @arborvitae666

    is_singular()

    ありがとうございます!!
    良いヒントを頂きました。

    is_singular( ‘タクソノミースラッグ’ )

    試行錯誤してみます!

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「PHPの条件分岐の書き方 〜 ターム名ラベル表示させたい」には新たに返信することはできません。