在管理员中根据他们的URL搜索帖子?

时间:2016-08-01 作者:Tal Galili

在“帖子->所有帖子”管理页面中,我只想搜索和查看url中包含某些元素的帖子(例如,字符“-3”表示它们是重复的帖子)。

如何做到这一点?

2 个回复
SO网友:birgire

这里有一种支持搜索的方法post slugs 在后端。

让我们通过调用slug: 搜索词中的字符串。

Example

搜索以-2 我们希望能够搜索:

slug:*-2
其中*是通配符。

Demo Plugin

这是一个可能需要进一步测试和调整的演示插件:

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 我上一个答案中的插件here.

SO网友:kovshenin

如果不在主题或插件中显式编码,就无法从管理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,)
希望这有帮助。

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果