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

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

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

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

2回答

2392閲覧

PHPでの出力、コードの書き方。

white_yokohama

総合スコア10

WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2016/11/28 06:05

Attendance Managerというワードプレスのプラグインを少しカスタマイズしたいのですが、
いろいろ検索してもわからずじまいなので、ご質問をさせてください。
(PHPに関してかなり初心者ですが、よろしくお願いします。)

以下、編集したいところの箇所なのですが、

extract( $result ); if ( empty( $staff ) ) { printf( '<div class="alert">%s</div>', __( 'There are no staff today.', ATTMGR::TEXTDOMAIN ) ); } else { echo '<ul class="staff_block">'."\n"; foreach ( $staff as $s ) { $p = null; if ( $s->data[ATTMGR::PLUGIN_ID.'_mypage_id'] ) { $p = get_post( $s->data[ATTMGR::PLUGIN_ID.'_mypage_id'] ); } // Format $format = <<<EOD <section class="list"> <a href=""> <figure><img src="../images/sample1.jpg" alt="写真の説明"></figure> <h4>記事タイトル</h4> <p>ダミーテキストダミーテキストダミーテキスト <span class="sumi">ダミーテキスト</span></p> </a> </section> EOD;

上記のコードの中にワードプレスのテンプレートタグを挿入したいのですが、

<section class="list"> <a href="<?php echo get_permalink(); ?>"> <figure><?php the_post_thumbnail('thumbnail'); ?></figure> <h4><?php the_title(); ?></h4> <p><?php $custom_fields = get_post_custom($post_id); ?> <span class="sumi"><?php $custom_fields = get_post_custom($post_id); ?></span></p> </a> </section>

このように記載しても、PHPの記載のルールに従っていないようなので、
テンプレートタグがタグそのままで出力されてしま

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

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

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

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

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

guest

回答2

0

まず、プラグイン本体を編集するのはお勧めしません。プラグインの更新時に編集部分も含めて上書きされるため、アップデートのたびに作業が発生します。そのためにアップデートをしないという本末転倒なことにならないためにも、編集しないようにしてください。

WordPress にはフィルターフックという機構があり、動作をフィルタすることが出来ます。

【WordPressカスタマイズの幅が劇的に広がる、フィルターフックとアクションフックの使い方 | 株式会社LIG】
https://liginc.co.jp/web/wp/customize/92030

【WordPress API フックの使い方 | Sun Limited Mt.】
http://blog.syuhari.jp/archives/380

【apply_filters と add_filter の使用方法。 | WEBデザイン&WEBプログラミング -sei2の日記-】
http://blog1.dd-company.com/using-apply-filters-and-add-filter/


例えば下記であれば、'attmgr_shortcode_daily_format' でHTMLのフォーマットを変更でき、'attmgr_shortcode_daily_values' で置換キーと値を変更することが出来ます。記事タイトルを拾ったりするには 'attmgr_shortcode_daily_values' の第二引数の $args の中の 'current_staff' の中身から記事IDを探して get_post してと手間はかかりますが、コードを追っていけば出来ないことはないでしょう。

【class-shortcodes.php in attendance-manager/trunk/class – WordPress Plugin Repository】
https://plugins.trac.wordpress.org/browser/attendance-manager/trunk/class/class-shortcodes.php#L577


使っておられるプラグインのその部分を、the_post_thumbnail() などループ内で使う書き方をしても動きません。当該プラグインの構造とWP_Postオブジェクトのなど扱いについてある程度勉強する必要があります。

投稿2016/11/28 20:45

kei344

総合スコア69398

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

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

0

下記のような記載の場合、ヒアドキュメントといって「<<<EOD」から「EOD;」までを、文字列として扱います。
変数(「$」で始まる値)は展開されて表示されますが、それ以外は文字列として扱われる為、
この中にPHPのロジックを記載することはできません。(変数の展開のみ可)
「echo」をしたい値を一旦変数に格納して記載しないといけません。

PHP

1 $format = <<<EOD 2<section class="list"> 3 <a href="<?php echo get_permalink(); ?>"> 4 <figure><?php the_post_thumbnail('thumbnail'); ?></figure> 5 <h4><?php the_title(); ?></h4> 6 <p><?php $custom_fields = get_post_custom($post_id); ?> 7 <span class="sumi"><?php $custom_fields = get_post_custom($post_id); ?></span></p> 8 </a> 9</section> 10EOD;

すべて変数に格納可能であれば、下記のように記載できますが、
関数内でechoしている場合は、今回の修正方法では不可能だと思います。

PHP

1$get_permalink_val = get_permalink(); 2$the_post_thumbnail_val = the_post_thumbnail('thumbnail'); 3$custom_fields = get_post_custom($post_id) 4$the_title_val = the_title(); 5 $format = <<<EOD 6<section class="list"> 7 <a href="{$get_permalink_val}"> 8 <figure>{$the_post_thumbnail_val}</figure> 9 <h4>{$the_title_val}</h4> 10 <p>{$custom_fields} 11 <span class="sumi">{$custom_fields}</span></p> 12 </a> 13</section> 14EOD;

投稿2016/11/28 06:30

himakuma

総合スコア952

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問