Discordコミュニティを作りました! 参加する

フォーラム

トピックを立てる前にチェック
  1. フォーラムガイドライン」に必ず目を通してください。
  2. バージョンアップデート後に表示がおかしくなった場合は、
    「SWELL設定」>「リセット」からキャッシュクリアを先にお試しください。
  3. フォーラム内検索で過去に同じようなトピックがないか検索してみてください。
フィルターフックを使ってurlが入力さ...
 
通知
すべてクリア

フィルターフックを使ってurlが入力された場合のみアイコン画像リンクさせたい

4 投稿
2 ユーザー
0 Likes
166 表示
micky0221
(@micky0221)
投稿: 5
メンバー
Topic starter
 
swellの子テーマでfunctions.phpに追記して下記のようなことはできるのでしょうか?
 
カスタム投稿タイプを作成し、各モデルのプロフィールページを作りたいと思っています。
Advanced Custom Fieldsプラグインを使いフィールドグループを作成し、フィルターフックによる方法で子テーマのfunctions.phpに記載することで記事ページ(single.php)にカスタムフィールドの値(画像、出身地、趣味、資格等)を出力させることはできました。
 
▼現在記載のfunctions.php
// カスタムフィールドの出力
add_filter('the_content', function($the_content) {
if (is_singular('casts')) {


// ACFで設定した画像を取得 ※関数内で宣言


$ImgIcon = get_field('img_cast');


$html .= '<img class="work-shop-img-icon" src="'.$ImgIcon['url'].'">';
$html .= '<p>出身地; '.get_field('hometown').'</p>';
$html .= '<p>サイズ; '.get_field('size').'</p>';
$html .= '<p>趣味; '.get_field('hobbies').'</p>';
$html .= '<p>特技; '.get_field('abilities').'</p>';
$html .= '<p>資格; '.get_field('skills').'</p>';
$html .= '<p>所属; '.get_field('affiliation').'</p>';
$html .= '<p>経歴; '.get_field('biography').'</p>';
return $html;
}


// トップページで何も表示されなくなるため
else {
return $the_content;
}
});
 
ここからができるかどうかの質問内容になります。
 
上記のモデルのプロフィールに、運用しているSNSがある場合のみ、それぞれのSNSアイコン画像にリンクさせたいです。
フィールドにurlが入力された場合のみsnsアイコンを表示してリンクをはりたいです。
フィールドが空白の場合はsnsアイコンを非表示にしたいです。
フィールドラベルは、インスタグラム、エックス、ブログ、facebookなどがあります。
例えば全く運用していない人はアイコン表示なしで、インスタグラム、エックスのみ運用している人はインスタとエックスのSNSアイコンを表示してアイコンをクリックすると該当のページにリンクするという形です。
 
上記のフィルターフックの方法に追記して出力することは可能なのでしょうか?
以前はオリジナルテーマで直接phpファイルを編集してこのようなことをしていたのですが、swellの子テーマ追記で可能なのか全くわからない状態です。
子テーマ追記で可能な方法でしたら、フィルターフックでなくてもいいです。
ご教授いただければ幸いです。
よろしくお願いいたします。
 
確認項目
利用規約に同意します*, ガイドラインを読み、内容を把握しています*, よくある質問を先にチェック済みです*, 過去に同じようなトピックがないか検索済みです*, WordPress更新後、SWELLは最新版にしましたか?, Googleなどでも検索してみました, プラグインを停止しても同じことが起こることを確認しました, デフォルトテーマ等、他のテーマでも同じことが起こることを確認しました, 自分で追加したコードに問題がないかチェック済みです, サポート範囲外だということを理解しているが助けが欲しい(有料サポートしてくれる方を探したい)
問題が確認できるページのURL
利用中のSWELL本体のバージョン
2.13.0
利用中のPHPバージョン
8.2.27
OS
Windows
利用中のWordPressバージョン
6.7.1
利用中のサーバー会社
ロリポップ
ブラウザ
Chrome
利用中のプラグイン一覧

Advanced Custom Fields

This topic was modified 1か月前 by micky0221
 
投稿済 : 13/01/2025 4:59 pm
トピックタグ
かんた
(@swell_mania)
投稿: 710
Https://webrent.xsrv.jp/
 

「もしurlがあれば出力する」の条件分岐をすれば実現できます。SWELL固有のカスタマイズではなく、検索するとカスタマイズの解説記事がかなり見つかりますよ。ご自身が分かりやすいと思う記事を参考にしてみると良いかと思います。

一般ユーザー
SWELL初心者のために、ブロックパターンライブラリーを運営しています。

 
投稿済 : 13/01/2025 9:30 pm
micky0221
(@micky0221)
投稿: 5
メンバー
Topic starter
 

@swell_maniaさん

お返事いただきありがとうございます。

プログラミングが本当に苦手なもので、子テーマを使用した場合のphpの記述方法が理解できずにおります。
以前はオリジナルテーマで作成しており、かんたさんが言われるようにネット検索の情報から得た条件分岐をsingle-casts.phpに直接書き込み、なんとか動作しておりました。(下記参照コード:▼以前のオリジナルテーマのsingle-casts.php)

今回はテーマ(swell)を使用しているため、single-casts.phpに直接書き込むと、アップデートの際元に戻ってしまう手間を考え、上記のフィルターフックによる方法で子テーマのfunctions.phpに記載した上記コード内に、下記コード(「もしurlがあれば出力する」の条件分岐)を追記することが可能なのだろうかと思っております。

やはり直接single-casts.phpに条件分岐を記載し、アップデートした際はまた記載しなおす方法になるのでしょうか?
もしわかる方がおられたらご教授いただければ幸いです。

▼以前のオリジナルテーマのsingle-casts.php

<div class="snsarea">/

<?php
$metakeys = array('Twitter' ); // 表示したいカスタムフィールドのキーを配列に格納
foreach( $metakeys as $key ) :
$value = get_post_meta( $post->ID, $key, true );
$value = esc_html( $value ); // WP2.8+
// $value = wp_specialchars( $value );
$value = nl2br($value);
if ( !empty( $value ) ) :
?>

<div class="snsbox">
<a href="<?php echo $value; ?>" target="_blank"><img src="<?php echo get_template_directory_uri(); ?>/img/logo-black.png" alt="Twitter(ツイッター)" width="39" height="40"></a>
</div>

<?php
endif;
endforeach;
?>

</div>
 
投稿済 : 19/01/2025 3:57 pm
かんた
(@swell_mania)
投稿: 710
Https://webrent.xsrv.jp/
 

the_contentでフィルターすれば良いかと思います。

一般ユーザー
SWELL初心者のために、ブロックパターンライブラリーを運営しています。

 
投稿済 : 19/01/2025 6:36 pm
共有: