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

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

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

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

PHP

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

プラグイン

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

Q&A

0回答

267閲覧

WordPress カスタム投稿タイプをカスタムフィールドで絞り込み

ouka1102

総合スコア0

WordPress

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

PHP

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

プラグイン

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

0グッド

0クリップ

投稿2022/05/03 04:07

WordPressでオリジナルのプラグインを作っています。そのプラグイン内のカスタム投稿タイプをカスタムフィールドで絞り込みたいと考えています。
そこで以下のようなサイトを見つけました。

https://metabox.io/filter-posts-custom-fields-custom-taxonomies-archive-pages/#filter-by-custom-fields

まず以下のコードをarchive.phpに挿入するよう書かれていたので試したところこれはうまくいきました。表示されたカスタムフィールドの値をクリックすると「example.com/?getby=field&field=値」というURLがアドレスバーに現れました。

<div class="filter-custom-field"> <?php global $wpdb; $meta_values = $wpdb->get_col( "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key='author_book'" ); foreach ( $meta_values as $meta_value ) : ?> <a href="?getby=field&field=<?= esc_attr( $meta_value ) ?>"> <?= esc_html( $meta_value ) ?> </a> <?php endforeach ?> </div>

しかし次のコードを「プラグイン>src>app>App.php」というファイルに挿入したところ

Parse error: syntax error, unexpected 'add_action' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /home/public_html/wp-content/plugins/プラグイン名/src/app/App.php on line 922

というエラーが出ました。

function yourprefix_filter_archive_by_field( $query ) { if ( is_admin() || ! $query->is_archive() || ! $query->is_main_query() || empty( $_GET['getby'] ) || 'field' !== $_GET['getby'] ) { return; } $query->set( 'meta_key', 'author_book' ); $query->set( 'meta_value', $_GET['field'] ); return $query; } add_action( 'pre_get_posts','justread_filter_archive');

このコードに修正するべき個所があるのか、挿入する場所が悪かったのか、解決策があるようでしたらご教示いただけるとありがたいです。

よろしくお願いいたします。

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

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

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

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

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

CHERRY

2022/05/03 06:38 編集

WordPress へプラグインの登録はどのように行なっていますか。 また、呼び出した箇所は Class の中でしょうか? 名前空間は使われていますか?
ouka1102

2022/05/03 07:01

ありがとうございます。 >WordPress へプラグインの登録はどのように行なっていますか。 公開していないので自分のサイトの中でのみ使用しています。 プラグインインストーラーからアップロードしました。ちなみにプラグインのルートディレクトリのPHPファイルの最初には以下のように記述されています。 /* Plugin Name: PianoStudio Repertoires Plugin URI: https://uittreksel-register.nl Description: Adds repertoirs, songs, and composers to your pianostudio.jp site. Author: Version: 0.3.2 Author URI: Text Domain: pianostudio-repertoires */ >また、呼び出した箇所は Class の中でしょうか? はい、このエラーが出たときはClassの中でしたので、外に置き換えたら以下のようなエラーになりました。 call_user_func_array() expects parameter 1 to be a valid callback, function 'justread_filter_archive' not found or invalid function name in /home/public_html/wp-includes/class-wp-hook.php on line 307 >名前空間は使われていますか? いえ、使用していません。初耳の言葉だったので検索しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問