Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果标题、内容或标签中存在关键字,则Wordpress获取文章_Wordpress_Search_Tags_Keyword - Fatal编程技术网

如果标题、内容或标签中存在关键字,则Wordpress获取文章

如果标题、内容或标签中存在关键字,则Wordpress获取文章,wordpress,search,tags,keyword,Wordpress,Search,Tags,Keyword,我使用get_posts来获取与搜索关键字匹配的帖子列表,问题是我默认情况下,get_posts的s不搜索标签,如果在标题中而不是标签中找到关键字,则在中使用tag_slug\uu将不起作用 我的搜索条件是: 如果标题中存在关键字,则返回帖子 如果内容中存在关键字,则返回帖子 如果关键字是与帖子关联的标记,则返回帖子 任何想法都会很棒。我尝试了“搜索一切”插件,但这似乎只适用于WordPress的默认搜索功能 下面的代码是我尝试的一个简化版本,但这并不满足所有3个标准 <?php /*

我使用get_posts来获取与搜索关键字匹配的帖子列表,问题是我默认情况下,
get_posts
s
不搜索标签,如果在标题中而不是标签中找到关键字,则在
中使用
tag_slug\uu将不起作用

我的搜索条件是:

  • 如果标题中存在关键字,则返回帖子
  • 如果内容中存在关键字,则返回帖子
  • 如果关键字是与帖子关联的标记,则返回帖子
  • 任何想法都会很棒。我尝试了“搜索一切”插件,但这似乎只适用于WordPress的默认搜索功能

    下面的代码是我尝试的一个简化版本,但这并不满足所有3个标准

    <?php
    
    /* Set global query parameters */
    $image_args = array(
        'posts_per_page' => (isset($_GET['show_all']) && $_GET['show_all'] == 'true')? 100000 : 20,
        'post_type' => 'attachment',
        'post_mime_type' => array('image/jpeg', 'image/png'),
        'meta_key' => 'language',
        'meta_value' => "(^".$languages."$|\"".$languages."\"\;)",
        'meta_compare' => 'REGEXP',
        'tax_query' => array(
            'relation' => 'AND',
            array(
                'taxonomy' => 'media_category',
                'field' => 'term_id',
                'terms' => array($gallery_filter, $hotel->term_id),
                'operator' => 'AND',
            ),
        ),
    );
    
    /* If page numbert given, add offet */
    if(!empty($page_no))
        $images_args['offset'] = 20*((int)$page_no-1);
    
    
    /* If search term submitted, add it to the s parameter */
    if(isset($_GET['search'])){
        $image_args['tag_slug__in' = explode(" ", $_GET['search']);
        $image_args['s'] = urldecode($_GET['search_term']);
    }
    

    您可以使用自己的查询。下面是一个例子

    $querystr="
        SELECT *
            FROM $wpdb->posts, $wpdb->term_relationships, $wpdb->term_taxonomy, $wpdb->terms
                WHERE ($wpdb->terms.name = '$s'
                OR $wpdb->posts.post_content LIKE '%$s%'
            OR $wpdb->posts.post_title LIKE '%$s%')
            AND $wpdb->posts.ID = $wpdb->term_relationships.object_id
            AND $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id
            AND $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id
            ORDER BY $wpdb->posts.post_date DESC
    ";
    
    $pageposts = $wpdb->get_results($querystr, OBJECT_K);
    
    foreach ($pageposts as $post): setup_postdata($post);
        echo the_title() . '<br /><br />';
    endforeach;
    
    $querystr=”
    挑选*
    从$wpdb->posts,$wpdb->term_关系,$wpdb->term_分类法,$wpdb->terms
    其中($wpdb->terms.name='$s'
    或$wpdb->posts.post_内容,如“%$s%”
    或$wpdb->posts.post_标题,如“%$s%”)
    和$wpdb->posts.ID=$wpdb->term\u relationships.object\u ID
    和$wpdb->term\u relationships.term\u taxonomy\u id=$wpdb->term\u taxonomy.term\u taxonomy\u id
    和$wpdb->term\u taxonomy.term\u id=$wpdb->terms.term\u id
    按$wpdb->posts.post\u日期描述订购
    ";
    $pageposts=$wpdb->get_results($querystr,OBJECT_K);
    foreach($pageposts作为$post):setup\u postdata($post);
    回显标题()

    ; endforeach;
    查看Wordpress提供的过滤器。它允许您将MySQL语句直接插入到WP查询中。

    我使用了
    wpdb
    查询来获取结果。加入posts和taxonomy表,然后通过
    $search\u title
    获得不同的结果。希望这能奏效。:)


    我知道WP_查询参数,并详细介绍了我的尝试。我的查询中有很多条件逻辑,在这里粘贴代码将使其脱离上下文。我会尽力简化。@rnevius,我已经添加了我尝试过的代码,或者至少添加了一个简化版本(由于生成示例的速度很快,可能会包含语法错误)。如果
    WP\u Query
    支持支持嵌套字段查询的常规
    field\u Query
    参数,那就太酷了。构建这样一个插件将是一个长期的项目,但我想起点可能是这样一个提议@PieterGoosen@birgire这肯定会给core带来巨大的好处,甚至只是一个插件。从长远来看,我已经忙了好几个月了,有一个巨大的分页插件支持引用程序,所有的类都完成了,我只需要写最后的函数,但要坐下来写它们。。。变得懒惰,我又开始弹吉他了,所以……是的,我同意,原生搜索可能更灵活。我认为这种嵌套字段查询支持可能会解决SO或WPSE上的许多问题。让我们看看这会发生什么。。。(期待你的插件发布-享受吉他带来的乐趣;-)@PieterGoosen
    global $wpdb;
    $querystr= "SELECT DISTINCT $wpdb->posts.* FROM $wpdb->posts
                    LEFT JOIN $wpdb->term_relationships
                        ON ( $wpdb->posts.ID = $wpdb->term_relationships.object_id )
                    LEFT JOIN $wpdb->term_taxonomy
                        ON ( $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id )
                    LEFT JOIN $wpdb->terms
                        ON ( $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id ) 
    
                    WHERE ( $wpdb->terms.name LIKE '%$search_title%'
                        OR $wpdb->posts.post_content LIKE '%$search_title%'
                        OR $wpdb->posts.post_title LIKE '%$search_title%' )
                        AND $wpdb->posts.post_status = 'publish'
                        AND $wpdb->posts.post_type = 'product' 
                        ORDER BY $wpdb->posts.post_title ASC";
    
    $query_object = $wpdb->get_results($querystr);