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

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

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

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

PHP

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

Q&A

0回答

423閲覧

WordPress管理画面のカスタム

cc77

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿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/ツールのバージョンなど)

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

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問