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

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

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

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

PHP

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

Q&A

0回答

337閲覧

WordPress カスタム投稿タイプの記事取得

gatyame

総合スコア7

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/04/06 16:31

編集2018/04/07 00:28

こんばんは、プログラム初心者です。

WordPressを使い、サイトを作成しています。

お知らせというコンテンツを作成し、
投稿時に新着通知メールが飛ぶ仕様です。

$postなどでタイトルと本文を取得しようとしても
何故かタイトルしか取得できず

カスタム投稿タイプが原因だとわかりました。

global $post; $my_posts= get_posts(array( 'post_type' => array('post','top_info'), 'numberposts' => 1 ));

など、調べて分かる限りのコードは試しましたが
やはりタイトルだけは取得できて、本文が取得できません。

新規投稿時の条件

if ( 'publish' == $new_status && 'publish' != $old_status && 'top_info' == $post->post_type )
カスタム投稿タイプのスラッグ名: 'top_info' 本文入力エリアフィールド名: 'info_text' 本文が格納されてるDBテーブル名: hs_postmeta 本文が格納されてるDBカラム名: postmeta_value

以上が情報です。

アドバイスをお願いします。

【追記】

function publishSentMail ( $new_status, $old_status, $post ) { if ( 'publish' == $new_status && 'publish' != $old_status && 'top_info' == $post->post_type ) { global $post; $args = array ( 'post_status' => array('publish') ); $the_query = new WP_Query($args); if ($the_query->have_posts()) { $the_query->the_post(); $key = get_post_custom_keys($post_id); $id = get_the_ID(); $meta_values = get_post_meta($id, $key); } mb_language("ja"); mb_internal_encoding("UTF-8"); $to = "*****@***.co.jp"; $subject = "タイトル"; $text = "$meta_values"; $from = "****"; $from_mail = "*************@****.co.jp"; $from_name = "****"; $header = ''; $header .= "Content-Type: text/plain \r\n"; $header .= "Return-Path: " . $from_mail . " \r\n"; $header .= "From: " . $from ." \r\n"; $header .= "Sender: " . $from ." \r\n"; $header .= "Reply-To: " . $from_mail . " \r\n"; $header .= "Organization: " . $from_name . " \r\n"; $header .= "X-Sender: " . $from_mail . " \r\n"; $header .= "X-Priority: 3 \r\n"; $response = mb_send_mail( $to, $subject, $text, $header); wp_reset_postdata(); } }

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

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

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

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

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

kei344

2018/04/06 16:42

本文を取得するためのコードが提示されていません。省略せず記載された方が回答の精度があがります。
退会済みユーザー

退会済みユーザー

2018/04/06 18:36

部分部分を個々に提示するのではなく、「投稿時に新着通知メールが飛ぶ」仕組み全体のコードを提示していただけますか。
gatyame

2018/04/07 00:30

現状のコードを追記しました。
kei344

2018/04/07 16:34

記事タイトルすら取得されていないコードですが・・・。
stampdoor

2018/04/08 05:56

カスタム投稿タイプが原因だと思った理由はなんですか?単純に$subjectと$textが取得できていないだけかと思いますが。
gatyame

2018/04/08 14:37

今のコードではそうです。タイトルではpost_titleで取得可能ですが、本文がpostmetaに保管されており、post_contentにはないからです。 それがカスタム投稿タイプが原因だと思った理由です
stampdoor

2018/04/09 00:47

うーん、普通にget_the_title()とget_the_content()で取ってこれそうな気がするんですが…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問