Импорт метаданных из категорий all in seo в Yoast
<?php
add_shortcode("yoast_key_update_category", function () {
$result = "";
$optionKeyFragment = "cat_meta_key_";
$args = array(
'type' => 'post',
'child_of' => 0,
'parent' => '',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 0,
'hierarchical' => 1,
'exclude' => '',
'include' => '',
'number' => 0,
'taxonomy' => 'category',
'pad_counts' => false,
);
$categories = get_categories($args);
if ($categories) {
$categoryMeta = new CategoryMeta();
$result = "";
$num = 0;
$result .= $categoryMeta->print_option();
foreach ($categories as $cat) {
$id = $cat->term_id;
$option = $optionKeyFragment . $id;
$des = get_option($option);
if(!empty($des)){
$categoryMeta->updateMeta($id, $des);
$num++;
$result .= "$option <br/>";
}
}
}
$result .= "Импортировано в " . $num . " записей , мета ключей ";
return $result;
});
class CategoryMeta {
private $option;
public function __construct() {
$this->option = get_option('wpseo_taxonomy_meta'); //хранятся сеомета по категориям
}
public function print_option() {
$result = "";
foreach ($this->option as $key => $value) {
$result .= "<pre> $key - " . print_r($value, TRUE) . "</pre>";
}
return $result;
}
public function updateMeta($id, $data, $term = "category") {
$metatitle = $data["page_title"];
$metadescr = $data["description"];
$metakey= $data["metakey"];
if (!empty($metakey) || !empty($metatitle) || !empty($metadescr)) {
$this->option[$term][$id] = array(// or category
'wpseo_title' => $metatitle,
'wpseo_desc' => $metadescr,
'wpseo_focuskw' => $metakey
);
}
}
public function __destruct() {
update_option('wpseo_taxonomy_meta', $this->option);
}
}