为什么不在帖子中添加一个自定义字段,这样在保存帖子时,就可以自动创建一个具有该值的自定义字段,然后就可以轻松地搜索该字段并在页面上显示。
将Bookcode另存为Post Meta要保存该自定义字段,可以添加函数。php:
function save_bookcode( $post_id ) {
// If this is just a revision, no need to save bookcode
if ( wp_is_post_revision( $post_id ) )
return;
// save a custom field \'bookcode\' with CFX+ID
add_post_meta( $post_id, \'bookcode\', \'CFX\' . $post_id, true ); // true on last param so that this field is unique and saved only the first time
}
add_action( \'save_post\', \'save_bookcode\' );
在本例中,bookcode是为任何帖子类型保存的,但您可以限制使用任何帖子类型。
在模板上显示Bookcode
然后要在模板上显示,在循环内,您只需编写:
Book ID: <?php echo get_post_meta( get_the_ID(), \'bookcode\', true ); ?>
在搜索中包括Bookcode,要在正常搜索中包括该自定义字段,可以使用pre\\u get\\u posts过滤器:
function add_bookcode_to_search( $query ) {
if ($query->is_search && !is_admin() ) {
$query->set( \'meta_query\', array(
array(
\'key\' => \'bookcode\',
\'value\' => $query->query_vars[\'s\'],
\'compare\' => \'LIKE\'
)
));
}
return $query;
}
add_filter( \'pre_get_posts\', \'add_bookcode_to_search\' );
但是,只有在标题/内容和元数据上都有图书代码时,才会返回结果。如果要将此自定义字段添加为另一个搜索位置,则需要手动更改SQL查询:
https://adambalee.com/search-wordpress-by-custom-fields-without-a-plugin/或者你也可以使用一个已经完成这项工作的插件,比如Search Everything 或Relenvassi.