WordPressでオリジナルのプラグインを作っています。そのプラグイン内のカスタム投稿タイプをカスタムフィールドで絞り込みたいと考えています。
そこで以下のようなサイトを見つけました。
まず以下のコードを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');
このコードに修正するべき個所があるのか、挿入する場所が悪かったのか、解決策があるようでしたらご教示いただけるとありがたいです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー