我希望修改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;否则到详细页面。
答案 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