デジタルアーカイブ公開システム(10)
2022年4月の博物館法改正で第3条3項博物館の事業に「博物館資料に係る電磁的記録を作成し、公開すること」が追加されました。この趣旨は 「博物館資料をデジタル化して保存(=デジタル・アーカイブ化)し、インターネット等を通じて公開することが意義深いものと考えれる」とのことであることから、博物館資料のデジタル・アーカイブ化が急がれている。
そこで、開発したシステムに大量の画像をアップロードし、デジタルアーカイブ化する機能を追加した。(このことによりメタデータ等をCSVから設定することが容易になる)また、絞り込み検索 のために「pre_get_posts」、抜粋作成のために「get_the_excerpt」フックしたことにより多くのテーマでCSS変更だけで対応できるようになった。
// 直接ファイルから表示する
function da_dir_hyouji($dadir){
$imgarrays = [];
$files=glob('wp-content/gdir/'.$dadir.'/*');
$pattern = '/jpg|png|gif|jpeg|JPG|PNG|GIF|JPEG/';
foreach ($files as $file_name) {
if(preg_match( $pattern, $file_name)){
// echo $file_name;
array_push($imgarrays,$file_name);
}
}
//var_dump($imgarrays);
if(get_field('bunsho')){ ?>
<div id="bookcontainer">
<header>
<div id="toolbarDiv">
<span id="button-panel">
<a id="full-page" href="#full-page">全画面表示</a>
| <a id="reset" href="#reset">リセット</a>
| <a id="zoom-out" href="#zoom-out">縮小</a>
| <a id="zoom-in" href="#zoom-in">拡大</a>
</span>
</div>
</header>
<div id="bookcontents">
<div id="contentDiv" style="background-color:transparent; "></div>
</div>
<footer>
<div id="footerDiv" >
<a id="previous" href="#previous-page">前頁</a>
| <a id="next" href="#next-page">次頁</a>
| 画像番号:<div id="pageNum"></div>
</div>
</footer>
</div>
</div>
<script type="text/javascript">
var viewer;
var idata = [
<?php foreach ($imgarrays as $imgarray) {
//echo get_site_url().'/'.$imgarray;
?>
{ type: 'image',
url: '<?php echo get_site_url().'/'.$imgarray; ?>',
},
<?php
}
?>
];
</script>
<?php
}else
{
?>
<div class="slider" >
<div class="slider-for">
<?php foreach ($imgarrays as $imgarray) {
?>
<a class="sp-slide" href= <?php echo get_site_url().'/'.$imgarray; ?>> <img src="<?php echo get_site_url().'/'.$imgarray; ?>"></a>
<?php }?>
</div>
<div class="slick-counter"><span class="current"></span>枚目 / <span class="total"></span>枚中</div>
<div class="slider-nav-wrap">
<div class="slider-nav">
<?php foreach ($imgarrays as $imgarray) {
?>
<div class="sp-thumbnail"> <img src="<?php echo get_site_url().'/'.$imgarray; ?>"</div></div>
<?php } ?>
</div>
<div class="slick-nav-arrows">
<div class="slick-next"></div>
<div class="slick-prev"></div>
</div>
</div>
</div>
</div>
<?php }}
絞り込み検索を pre_get_posts でフックすることによって従来はカスタム投稿"da"用のテンプレートが必要であったが特別なテンプレートを作成する必要がなくなった。
/*
絞り込み検索 pre_get_posts
*/
function daPreGetPosts( $query ) {
if ( is_admin() || ! $query->is_main_query() ){
return;
}
if ( $query->is_search() ) {
global $da_searchf_sel;
$da_keys = $_GET;
$taxn1 = $_GET['taxn1'];
//var_dump($da_keys);
if($taxn1){
$taxquerysp[] = array(
'taxonomy'=>'taxn',
'terms'=> $taxn1,
'include_children'=>false,
'field'=>'slug',
'operator'=>'AND'
);
}
if($da_keys['post_type'])$post_type = $da_keys['post_type'];
else $post_type = $p_t;
//echo $post_type;
foreach( $da_searchf_sel as $sel){
if($da_keys[$sel]){
if(!is_array($da_keys[$sel])){
$da_keys[$sel]=multiexplode( [',',' ','、',' '], $da_keys[$sel]);
}
//var_dump($da_keys[$sel]);
foreach ($da_keys[$sel] as $da_key){
$metaquerysp[] = array(
'key'=>$sel,
'value'=> $da_key,
'compare'=>'LIKE',
);
}
}
}
$metaquerysp['relation'] = 'AND';
query_posts( array(
'post_type' => $post_type,
'tax_query' => $taxquerysp,
'meta_query' => $metaquerysp,
's' => $da_keys['s'],
'posts_per_page' => '10',
'paged' => get_query_var('paged'),
)
);
$query->set('posts_per_page', 10);
$query->set('post_type', $post_type);
$query->set('tax_query', $taxquerysp);
$query->set('meta_query', $metaquerysp);
$query->set('post_type', $post_type);
}
}
add_action('pre_get_posts','daPreGetPosts');
/*
end pre_get_posts
*/
サーチページでメタデータを表示するときに「the_excerpt」に加え「get_the_excerpt」で取得できるようにフイルターフックした。このことによりLightingG3等に対応できた。
/*
searchページで da の時はget_the_excerptメタデータを取得する
*/
if (!function_exists('da_ls_mdtuika0')) {
function da_ls_mdtuika0($the_excerpt) {
$post_type = get_post_type();
if (is_search() && $post_type == 'da') {
$return = da_se_mdlist();
return $return;
} else {
return $the_excerpt;
}
}
add_filter('get_the_excerpt','da_ls_mdtuika0');
}
博物館資料のデジタル・アーカイブ化が急がれているが、作成したデジタルアーカイブ用プラグインが使われることを期待する。