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

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

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

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

PHP

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

受付中

WordPress管理画面のカスタム

cc77
cc77

総合スコア0

WordPress

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

PHP

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

0回答

-1評価

0クリップ

281閲覧

投稿2022/04/08 03:15

前提

現在、WordPressにてシステムの構築を行なっており、添付のような流れで画面を進めていきたく、
投稿一覧画面で複数項目で絞り込み検索を行い、検索結果ページで記事を選択して追加を行い、追加した記事のタイトルを別の画面に反映するといった機能を実装したいです。

実現したいこと

管理画面のカスタム投稿一覧にて複数項目での絞り込み検索機能を追加したい。
検索結果ページで出てきた記事を選択して別のカスタム投稿のカスタムフィールド欄にその記事のタイトルを追加したい。
カスタム投稿test1にカスタム投稿test2、カスタム投稿test3の情報を追加したい。

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

エラー等は特にありませんが、ネットで記事を調べ試していますが、一向に思うように構築出来ません。

内容
1.フォームからの情報をカスタム投稿test3にコピー。
2.カスタム投稿test2で日付けシートを作成。
3.カスタム投稿test1にオリジナルメニューを作成してカスタム投稿test2の情報を出力。
4.カスタム投稿test3で記事を検索して検索結果ページで記事を選択して追加をすると、カスタム投稿test1の任意のカスタムフィールド内(投稿編集画面)に追加した記事のタイトルを出力
5.カスタム投稿test2のデータをカスタム投稿test1にコピー
6.カスタム投稿test3の記事にカスタム投稿test2のデータと追加したカスタム投稿test3の記事タイトルを表示

現在の進行ですが下記コードで構築中です。4.からがうまく紐付けられていません。
コードの内のカスタム投稿名等を本番環境と少し変更しています。

該当のソースコード

/*カスタム投稿追加*/ function create_post_type2() { $progress = [ // entry のパラメータを設定する配列 'title', // 記事タイトル 'revisions' // リビジョン ]; register_post_type( 'test1', // カスタム投稿名 array( 'label' => '入稿', // 管理画面の左メニューに表示されるテキスト 'public' => true, // 投稿タイプをパブリックにするか否か 'has_archive' => false, // アーカイブを有効にするか否か 'menu_position' => 20, // 管理画面上でどこに配置するか今回の場合は「投稿」の下に配置 'labels' => array( 'name' => '入稿', 'singular_name' => '入稿', 'all_items' => '入稿一覧', 'add_new' => '入稿作成', 'add_new_item' => '入稿の追加', 'edit_item' => '入稿情報の編集', 'new_item' => '入稿追加', 'view_item' => '入稿を表示', 'search_items' => '検索', 'not_found' => '入稿者情報が見つかりません', 'not_found_in_trash' => 'ゴミ箱内にスタッフ情報が見つかりませんでした。', 'parent_item_colon' => '' ), ) ); register_post_type( 'test2', array( 'label' => '入稿日付シート一覧', 'public' => true, 'show_in_menu' => 'edit.php?post_type=test1', 'publicly_queryable' => false, ) ); register_post_type( 'test3', array( 'label' => '入稿者', 'public' => true, 'show_in_menu' => 'edit.php?post_type=test1', ) ); } add_action( 'init', 'create_post_type2' ); function save_entry_posts2() { $new_post = array( 'post_type' => 'test3', //コピー登録するカスタム投稿 'post_status' => 'private', //公開ステータス(非公開) 'post_title' => $_POST['name'], //投稿タイトル 'post_author' => 1 ); $post_id = wp_insert_post( $new_post, true ); update_post_meta( $post_id, 'test3_name', $_POST['name'] ); update_post_meta( $post_id, 'test3_sex', $_POST['sex'] ); update_post_meta( $post_id, 'test3_old', $_POST['old'] ); } add_filter( 'mwform_before_send_admin_mail_mw-wp-form-xx1', 'save_entry_posts2' ); function add_posts_columns2( $columns ) { $columns['test3_name'] = '名前'; //追加したい項目 $columns['test3_sex'] = '性別'; $columns['test3_old'] = '年齢'; return $columns; } add_filter( 'manage_edit-test3_columns', 'add_posts_columns2' ); //追加したい項目のデータをひっぱってくる function custom_posts_column2( $column_name, $post_id ) { if ( $column_name == 'test3_old' ) { $test3_old = get_post_meta( $post_id , 'test3_old' , true ); echo ( $test3_old ) ? $test3_old : '-'; //データ挿入し無ければ、「-」を表示 } } add_action( 'manage_posts_custom_column', 'custom_posts_column2', 10, 2 ); 管理画面検索 function posts_search_custom_fields( $custom_search, $query ) { if ( $query->is_search() && $query->is_main_query() ) { global $wpdb; $q = $query->query_vars; $n = ! empty( $q['exact'] ) ? '' : '%'; $searchand = ''; foreach ( $q['search_terms'] as $term ) { $include = '-' !== substr( $term, 0, 1 ); if ( $include ) { $like_op = 'LIKE'; $andor_op = 'OR'; } else { $like_op = 'NOT LIKE'; $andor_op = 'AND'; $term = substr( $term, 1 ); } $like = $n . $wpdb->esc_like( $term ) . $n; // カスタムフィールド用の検索条件を追加します。 $search .= $wpdb->prepare( "{$searchand}(($wpdb->posts.post_title $like_op %s) $andor_op ($wpdb->posts.post_content $like_op %s) $andor_op (custom.meta_value $like_op %s))", $like, $like, $like ); $searchand = ' AND '; } if ( ! empty( $search ) ) { $search = " AND ({$search}) "; if ( ! is_user_logged_in() ) $search .= " AND ($wpdb->posts.post_password = '') "; } return $search; } else { return $custom_search; } } add_filter( 'posts_search', 'posts_search_custom_fields', 10, 2 );

試したこと

プラグインでの検索枠拡張
・WP Custom Fields Search
・Search & Filter

functionでの記述(一括操作に処理を追加等)

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

ここにより詳細な情報を記載してください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

WordPress

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

PHP

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