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

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

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

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

PHP

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

プラグイン

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

受付中

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

ouka1102
ouka1102

総合スコア0

WordPress

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

PHP

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

プラグイン

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

0回答

0評価

0クリップ

128閲覧

投稿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');

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

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

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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 >名前空間は使われていますか? いえ、使用していません。初耳の言葉だったので検索しました。ありがとうございます。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

WordPress

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

PHP

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

プラグイン

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