まずは、WordPressの開発における私の貧しい人々の知識について申し訳ありません。質問の文字列パラメータとして渡されたuser_idに基づいて、管理者のカスタム投稿タイプリストのレコードをフィルタリングするには
http://album.multibaselocal.com/wp-admin/edit.php?post_type=albums&user_id=31
のようなクエリ文字列として渡されたuser_idに基づいて、管理者のカスタム投稿タイプの投稿リストをさらにフィルタリングできるオプションはありますか?
これは私が達成したいことです: album
と呼ばれるカスタムポストタイプがあります。これはサイトユーザーがアルバムをシステムにアップロードするために使用します。デフォルトでは、リストページに行くとすべてのアルバムがうまくいきます。ユーザーリストページでは、上記のようなクエリ文字列user_id
でアルバムリストページにリンクする各ユーザーの公開アルバムの数を示すカスタム列を追加しました。
私はuser_id
によってアルバムをフィルタリングしたいと思います。これは可能ですか?
私はこれをしようとしています:
add_filter('parse_query', 'filter_albums_further_if_user_id_found');
function filter_albums_further_if_user_id_found($query) {
if(isset($_GET['user_id']) && !empty($_GET['user_id'])) {
$user_id = $_GET['user_id'];
$requery = array(
'post_type' => 'albums',
'post_author' => $user_id,
'status' => 'publish',
'posts_per_page' => -1,
);
// What to do here?
}
}
私は完全にここに失っています。経験豊富なWP開発者ではありません!
私が使用しているフックがparse_query
と呼ばれているため、間違ったことが分かっていない場合は、どうかして再度クエリを解析して、既存の結果をフィルタリングする必要があります。user_id
。しかし、どこで、どの:(
あなたの助けをいただければ幸いです
EDIT(クエリ出力)知りません:。
WP_Query Object
(
[query] => Array
(
[post_type] => albums
[posts_per_page] => 20
)
[query_vars] => Array
(
[post_type] => albums
[posts_per_page] => 20
[error] =>
[m] =>
[p] => 0
[post_parent] =>
[subpost] =>
[subpost_id] =>
[attachment] =>
[attachment_id] => 0
[name] =>
[static] =>
[pagename] =>
[page_id] => 0
[second] =>
[minute] =>
[hour] =>
[day] => 0
[monthnum] => 0
[year] => 0
[w] => 0
[category_name] =>
[tag] =>
[cat] =>
[tag_id] =>
[author] =>
[author_name] =>
[feed] =>
[tb] =>
[paged] => 0
[meta_key] => user_id
[meta_value] => 31
[preview] =>
[s] =>
[sentence] =>
[title] =>
[fields] =>
[menu_order] =>
[embed] =>
[category__in] => Array
(
)
[category__not_in] => Array
(
)
[category__and] => Array
(
)
[post__in] => Array
(
)
[post__not_in] => Array
(
)
[post_name__in] => Array
(
)
[tag__in] => Array
(
)
[tag__not_in] => Array
(
)
[tag__and] => Array
(
)
[tag_slug__in] => Array
(
)
[tag_slug__and] => Array
(
)
[post_parent__in] => Array
(
)
[post_parent__not_in] => Array
(
)
[author__in] => Array
(
)
[author__not_in] => Array
(
)
)
[tax_query] => WP_Tax_Query Object
(
[queries] => Array
(
)
[relation] => AND
[table_aliases:protected] => Array
(
)
[queried_terms] => Array
(
)
[primary_table] =>
[primary_id_column] =>
)
[meta_query] =>
[date_query] =>
[post_count] => 0
[current_post] => -1
[in_the_loop] =>
[comment_count] => 0
[current_comment] => -1
[found_posts] => 0
[max_num_pages] => 0
[max_num_comment_pages] => 0
[is_single] =>
[is_preview] =>
[is_page] =>
[is_archive] => 1
[is_date] =>
[is_year] =>
[is_month] =>
[is_day] =>
[is_time] =>
[is_author] =>
[is_category] =>
[is_tag] =>
[is_tax] =>
[is_search] =>
[is_feed] =>
[is_comment_feed] =>
[is_trackback] =>
[is_home] =>
[is_404] =>
[is_embed] =>
[is_paged] =>
[is_admin] => 1
[is_attachment] =>
[is_singular] =>
[is_robots] =>
[is_posts_page] =>
[is_post_type_archive] => 1
[query_vars_hash:WP_Query:private] => 1c0b485390fc9607d8008a14177bd63d
[query_vars_changed:WP_Query:private] =>
[thumbnails_cached] =>
[stopwords:WP_Query:private] =>
[compat_fields:WP_Query:private] => Array
(
[0] => query_vars_hash
[1] => query_vars_changed
)
[compat_methods:WP_Query:private] => Array
(
[0] => init_query_flags
[1] => parse_tax_query
)
)
EDIT(関数本体は、現在使用して):を
add_action('pre_get_posts', 'filter_albums_further_if_user_id_found');
function filter_albums_further_if_user_id_found($query) {
if(!is_admin())
return;
if(isset($_GET['user_id']) && !empty($_GET['user_id'])) {
$user_id = $_GET['user_id'];
$query->set('meta_key', 'user_id');
$query->set('meta_value', $user_id);
}
echo '<pre>'; print_r($query); echo '</pre>'; die();
}
ご回答いただきありがとうございます。私はあなたのコードを私のfunctions.phpに追加しましたが、user_idがクエリ文字列に渡されたときに投稿が表示されなくなりました。しかし、urlからuser_idパラメータを取得すると、アルバムはすべてのユーザーに読み込まれます。 –
「print_r」の部分のコメントを外して、クエリーがどのようになっているかを確認して共有してください! – Samyer
もう一度ご支援いただきありがとうございます!元の質問を編集してクエリ出力を追加しました。 –