Shoora
4/5/2019 - 11:45 PM

Импорт метаданных из категорий all in seo в Yoast

Импорт метаданных из категорий 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);
    }

}