Wordpress: Как мне обновлять xml-файл изображениями, прикрепленными к странице? - PullRequest
0 голосов
/ 21 марта 2010

Если я хочу, чтобы xml-файл обновлялся со всеми изображениями, которые пользователь установил на страницу, я не должен писать и создавать и генерировать xml-файл каждый раз, когда кто-то посещает эту страницу (поскольку это может привести к чрезмерным накладным расходам) ) - следует ли мне создавать и заполнять файл, когда пользователь вместо этого присоединяет новый контент к странице в консоли администратора?

Ответы [ 2 ]

2 голосов
/ 21 марта 2010

Сначала вам нужно будет создать каталог под wp-контентом. Давайте назовем это wp-content / xmlimages / Теперь скопируйте этот код и вставьте его в wp-content / plugins / cr-attachmentpost2xml.php:

<?php
/*
Plugin Name: CR Attachment Post To XML
Plugin URI: http://bayu.freelancer.web.id/search/plugin
Description: Automatically create XML files for each post that list post attachment of that particular post.
Version: 0.1
Author: Arief Bayu Purwanto
Author URI: http://bayu.freelancer.web.id/

*/

add_action('publish_post', 'cr_attachmentpost2xml_publish_post_hook');

//add_action('admin_menu', 'cr_attachmentpost2xml_test');

function cr_attachmentpost2xml_publish_post_hook( $post_id ){
    __cr_attachmentpost2xml_impl( $post_id );
    return $post_id;
}

function cr_attachmentpost2xml_test(){
    __cr_attachmentpost2xml_impl( 738 );
}

function __cr_attachmentpost2xml_impl( $post_id ){
    $udir = wp_upload_dir();
    $writepath = $udir['basedir'] . '/xmlimages/';
    $attachment = get_children( 'post_type=attachment&post_parent=' . $post_id);

    if(wp_is_post_revision($postId)) return $post_id;
    //print_r($attachment);
    $xml = "<?xml version=\"1.0\"?>";
    $xml .= "<attachments>";

    foreach($attachment as $att){
        $image_src = wp_get_attachment_image_src( $att->ID );
        $xml .= "<attachment>";
        $xml .= "<id>{$att->ID}</id>";
        $xml .= "<date>{$att->post_date}</date>";
        $xml .= "<title>{$att->post_title}</title>";
        $xml .= "<mime_type>{$att->post_mime_type}</mime_type>";
        $xml .= "<url>".$image_src[0]."</url>";

        $xml .= "</attachment>";
    }
    $xml .= "</attachments>";
    file_put_contents($writepath . $post_id . ".xml", $xml);
    //echo "$xml";
}

ПРЕДУПРЕЖДЕНИЕ : Не исключайте чего-то особенного здесь, поскольку это просто быстрый и грязный код. Надеюсь, это сработает так, как вам нужно, и если вы все же используете этот код, не забудьте проверить, нет ли в нем дыры в безопасности.

0 голосов
/ 22 марта 2010

Есть какая-то конкретная причина, почему вам это нужно? Эти данные записываются WordPress, так почему бы не создать простой API, который возвращает XML по запросу? Нет смысла дублировать данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...