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

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

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

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

PHP

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

Q&A

解決済

1回答

407閲覧

【WP】メディアアップ時の自動投稿ができない

erp

総合スコア46

WordPress

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

PHP

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

0グッド

0クリップ

投稿2023/02/27 16:29

編集2023/02/27 22:09

実現したいこと

  • Wordpressで記事を自動投稿する

前提

メディアをアップロードするとカスタム投稿記事が自動で投稿される仕組みを作っています。

発生している問題・エラーメッセージ

記事が自動投稿されません。

該当のソースコード

PHP

1<?php 2 3$a = new autoUploadImg; 4 5class autoUploadImg { 6 function __construct() { 7 add_filter('wp_handle_upload', array($this, 'autoUpload')); 8 } 9 10 function autoUpload($arrayData) { 11 $imgPath = $arrayData['file']; 12 $mime = wp_check_filetype(basename($imgPath), null); 13 $imgID = attachment_url_to_postid($arrayData['url']); 14 $imgAlt = get_post_meta($imgID, '_wp_attachment_image_alt', true); 15 $imgCaption = $arrayData->post_excerpt; 16 $imgDescription = $arrayData->post_content; 17 $imgTitle = $arrayData->post_title; 18 $imgDate = $arrayData->post_date; 19 20 // ここで、条件[jpg]とか 21 if ($mime['type'] == "image/jpg" || $mime['type'] == "image/png" || $mime['type'] == "image/gif") { 22 23 global $post; 24 $post_types = array( 25 'works', 'journal', 26 ); 27 $category = ''; 28 29 if ($post_types && !is_wp_error($post_types)) : 30 foreach ($post_types as $post_type) : 31 if ($post_type == 'works') { 32 $category == 'gallery'; 33 } else { 34 $category == 'update'; 35 } 36 37 $url = home_url() . '/' . $post_type . '/' . $category . '/' . $imgTitle . '/'; 38 $response = @file_get_contents($url); 39 if ($response !== false) { 40 $ID = url_to_postid($url); 41 } else { 42 $ID = ''; 43 } 44 45 $date = array( 46 'ID' => $post->$ID, 47 'post_type' => $post_type, 48 'tax_input' => array($post_type . '-category' => $category, $post_type . '-tag' => ''), 49 'post_status' => 'publish', 50 'post_title' => $imgAlt, 51 'post_author' => 1, 52 'post_content' => '<img src="' . home_url() . '/wp-content/uploads/img/' . get_the_time('Y/m') . '/' . $imgTitle . '.jpg" alt="' . $imgAlt . '" data-caption="' . $imgAlt . '">', 53 'post_date' => $imgDate, 54 'post_name' => $imgTitle, 55 'post_excerpt' => $imgCaption, 56 'page_template' => 'page-portfolio.php', 57 ); 58 endforeach; 59 endif; 60 } elseif ($mime['type'] == 'video/mp4') { 61 62 global $post; 63 $post_types = array( 64 'works', 65 ); 66 $category = ''; 67 68 if ($post_types && !is_wp_error($post_types)) : 69 foreach ($post_types as $post_type) : 70 if ($post_type == 'works') { 71 $category == 'videos'; 72 } else { 73 $category == ''; 74 } 75 76 $url = home_url() . '/' . $post_type . '/' . $category . '/' . $imgTitle . '/'; 77 $response = @file_get_contents($url); 78 if ($response !== false) { 79 $ID = url_to_postid($url); 80 } else { 81 $ID = ''; 82 } 83 84 $date = array( 85 'ID' => $post->$ID, 86 'post_type' => $post_type, 87 'tax_input' => array($post_type . '-category' => $category, $post_type . '-tag' => ''), 88 'post_status' => 'publish', 89 'post_title' => $imgAlt, 90 'post_author' => 1, 91 'post_content' => ' 92 <video controls> 93 <source src="' . home_url() . '/wp-content/uploads/video/' . get_the_time('Y/m') . '/' . $imgTitle . '.mp4" type="video/mp4"> 94 <p>このブラウザーは HTML5 video に対応していません。/p> 95 </video> 96 ', 97 'post_date' => $imgDate, 98 'post_name' => $imgTitle, 99 'post_excerpt' => $imgCaption, 100 'page_template' => 'page-portfolio.php', 101 ); 102 103 endforeach; 104 endif; 105 } 106 107 108 $newPost_id = wp_insert_post($date); 109 if ($newPost_id) { 110 update_post_meta($newPost_id, 'custom_caption', $imgDescription); 111 } 112 return $arrayData; 113 } 114} 115

試したこと

php

1<?php 2 3function autoUpload($post) { 4 global $post; 5 $imgID = $post->ID; 6 $imgAlt = get_post_meta($imgID, '_wp_attachment_image_alt', true); 7 $imgTitle = $post->post_title; 8 $imgCaption = $post->post_excerpt; 9 $imgDescription = $post->post_content; 10 $imgDate = $post->post_date; 11 $mime = $post->post_mime_type; 12 $imgAuthor = $post->post_author; 13 $imgUrl = $post->guid; 14 15 // ここで、条件[jpg]とか 16 if ($mime == "image/jpeg" || $mime == "image/png" || $mime == "image/gif") { 17 18 $post_types = array('works', 'journal'); 19 foreach ($post_types as $post_type) : 20 if ($post_type == 'works') { 21 $category = 'gallery'; 22 $post_title = $imgAlt; 23 } else { 24 $category = 'update'; 25 $post_title = '「' . $imgAlt . '」更新'; 26 } 27 $url = home_url() . '/' . $post_type . '/' . $category . '/' . $imgTitle . '/'; 28 $response = @file_get_contents($url); 29 if ($response !== false) { 30 $ID = $post->url_to_postid($url); 31 } else { 32 $ID = ''; 33 } 34 35 $data = array( 36 'ID' => $ID, 37 'post_type' => $post_type, 38 'tax_input' => [ 39 $post_type . '-category' => [ 40 $category, 41 ], 42 $post_type . '-tag' => [ 43 '', 44 ] 45 ], 46 'meta_input' => [ 47 'custom_caption' => $imgDescription, 48 ], 49 'post_status' => 'publish', 50 'post_title' => $post_title, 51 'post_author' => $imgAuthor, 52 'post_content' => '<img src="' . $imgUrl . '" alt="' . $imgAlt . '" data-caption="' . $imgAlt . '">', 53 'post_date' => $imgDate, 54 'post_name' => $imgTitle, 55 'post_excerpt' => $imgCaption, 56 'page_template' => 'page-portfolio.php', 57 ); 58 endforeach; 59 } elseif ($mime == 'video/mp4') { 60 61 $post_type = 'works'; 62 if ($post_type == 'works') { 63 $category = 'videos'; 64 } else { 65 $category = ''; 66 } 67 $url = home_url() . '/' . $post_type . '/' . $category . '/' . $imgTitle . '/'; 68 $response = @file_get_contents($url); 69 if ($response !== false) { 70 $ID = $post->url_to_postid($url); 71 } else { 72 $ID = ''; 73 } 74 75 $data = array( 76 'ID' => $ID, 77 'post_type' => $post_type, 78 'tax_input' => [ 79 $post_type . '-category' => [ 80 $category, 81 ], 82 $post_type . '-tag' => [ 83 '', 84 ] 85 ], 86 'meta_input' => [ 87 'custom_caption' => $imgDescription, 88 ], 89 'post_status' => 'publish', 90 'post_title' => $imgAlt, 91 'post_author' => $imgAuthor, 92 'post_content' => ' 93 <video controls> 94 <source src="' . $imgUrl . '" type="' . $mime . '"> 95 <p>このブラウザーは HTML5 video に対応していません。</p> 96 </video> 97 ', 98 'post_date' => $imgDate, 99 'post_name' => $imgTitle, 100 'post_excerpt' => $imgCaption, 101 'page_template' => 'page-portfolio.php', 102 ); 103 } 104 wp_insert_post($data); 105} 106add_action('save_post_attachment', 'autoUpload', 10); 107

これでも動きません。

色々調べましたが、なぜ動かないのか分からずお手上げです。
$imgxx が取得できていないのでしょうか…
お助けいただけると、大変助かります。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Firefox 最新

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

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

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

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

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

CHERRY

2023/02/27 23:16

Webサーバーのログファイルに何かメッセージは出力されていますか。 > $imgxx が取得できていないのでしょうか… 必要な箇所に var_dump や error_log を追加して、デバッグしてみたら変数にはどのような値が入っているのでしょうか。 同様な方法で関数が呼び出されているか確認してみましょう。 このコードはどのテンプレートファイルに記載されているのでしょうか。 また、このコードは何を参考にされて記載されたのでしょうか。
erp

2023/03/01 15:59

ありがとうございます。 error_log で見たところ、フックがうまくできていないようでした。 解決の手がかりをありがとうございます。
guest

回答1

0

自己解決

フックを

PHP

1add_action('edit_attachment', 'autoUpload', 10);

としたところ動くようにはなりました。細部は修正していきます。

投稿2023/03/01 16:01

erp

総合スコア46

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問