根据帖子类型

时间:2018-04-16 09:05:45

标签: wordpress search advanced-custom-fields

我希望修改WordPress搜索,根据搜索结果中的帖子类型,帖子标题将链接到其详细页面或第三方网站。

例如,帖子类型 - '刊物'有一个详细页面,用户可以在点击帖子标题时详细阅读该出版物。但是,帖子类型 - '媒体'没有详细信息页面,但链接到第三方网站和“网站网址”。是一个自定义字段。

发布类型 - 发布 - >详细页面
发布类型媒体 - >第三方网站(网站网址)

出版物& media是我们创建的自定义插件。

以下是我尝试编写的代码,以获取自定义字段' website_url'并将其链接到the_title(),但它不起作用。它不会进入while($ the_query-> have_posts())循环。

If (post_type=="media")
{

$args = array(
                 'numberposts'  => -1,
                 'post_type'        => 'media',
                 'meta_query'   => array(
                 'relation'     => 'AND',
                 array(
                  'key'     => 'title', //post link
                  'compare' => '=',
                   'value'      => $posttitle
                    )
                     )
                   );

                 // query
               $the_query = new WP_Query( $args ); ?>

  <?php if( $the_query->have_posts() ): ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post();?>
<?php
 $link = get_field('website_url'); ?>
<div><h3><a href="<?php echo $link; ?>"><?php the_title(); ?></a></h3></div>

        <?php wp_reset_postdata(); ?>
        <?php endwhile; ?>
<?php endif; ?>
<?php
} //for each loop
                      } //if closes here
                         }
}
else
{
<a href="<?php echo get_the_permalink(); ?>"><?php the_title(); ?></a>
}

结果应该是当它是媒体帖子时,点击帖子标题会将用户带到&#34;网站网址&#34;否则到详细页面。

1 个答案:

答案 0 :(得分:0)

你可以挂钩“pre_get_post”并检查那里的帖子类型。这种方式的东西:

add_action( 'pre_get_posts','search_filter' );
function search_filter( $query ) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ($query->is_search) {
      if ( $query->get( 'post_type' ) == 'media' ){
        //change the post link here
      }
    }
  }

}

我希望这有助于获取更多信息,请参阅此内容 - https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts