"posts - > all posts"管理ページで、URLに何らかの要素がある投稿のみを検索して見たい(例えば、重複した投稿であることを示すために文字 "-3")。
どうすればこれができますか?
テーマやプラグインで明示的にコーディングしない限り、管理UIからこの種のクエリーを実際に実行することはできません。名前で-3
で終わる記事をすべて探したい場合は、SQLクエリを実行することをお勧めします。おそらくWP-CLIの魔法と組み合わせることもできます。
wp post list --fields=url --post__in=$(wp db query "SELECT ID FROM wp_posts WHERE post_name LIKE '%-3';" | paste -s -d,)
それが役立つことを願っています。
これはバックエンドでpost slugsの検索をサポートする一つの方法です。
このような検索を検索語のslug:
文字列で起動しましょう。
例
-2
で終わるスラグを検索するには、次のものを検索できるようにします。
slug:*-2
ここで、*はワイルドカードです。
デモプラグイン
これはさらにテストと調整が必要なデモプラグインです。
add_filter( 'posts_search', function( $search, \WP_Query $q ) use ( &$wpdb )
{
// Nothing to do
if(
! did_action( 'load-edit.php' )
|| ! is_admin()
|| ! $q->is_search()
|| ! $q->is_main_query()
)
return $search;
// Get the search input
$s = $q->get( 's' );
// Check for "slug:" part in the search input
if( 'slug:' === mb_substr( trim( $s ), 0, 5 ) )
{
// Override the search query
$search = $wpdb->prepare(
" AND {$wpdb->posts}.post_name LIKE %s ",
str_replace(
[ '**', '*' ],
[ '*', '%' ],
mb_strtolower(
$wpdb->esc_like(
trim( mb_substr( $s, 5 ) )
)
)
)
);
// Adjust the ordering
$q->set('orderby', 'post_name' );
$q->set('order', 'ASC' );
}
return $search;
}, PHP_INT_MAX, 2 );
これは私の前の答えの_name__like
プラグインに基づいています ここ 。