Home 게시판 커뮤니티 Q&A xmlrpc 로 글쓸때 카테고리 지정 질문입니다.

Tagged
4개 답변, 3 voices Last updated by Avatar of 김대현김대현 11 years, 11 months 전
  • Avatar of 김대현김대현
    Participant
    @myios
    #6663

    xmlrpc 기본 메소드 인 wp.newPost 가지고 글을 작성하고 있습니다.

    아래 코드는 통신할때 실어서 날리는 데이터 형태입니다.

    {

        “post_content” = ” 내용”;

        “post_status” = publish;

        “post_title” = “제목”;

        terms =     {

            category =      (7);

        };

    }

     

    숫자 7은 카테고리 id값입니다.

    id값대신 카테고리 제목을 넣어도 정상적으로 작동되구요..

     

    근데 저는 slug값으로 카테고리를 지정하고 싶습니다.

     

    혹시 terms나 temrs_name 으로 해결이 가능할까요?

    Avatar of 임 민형임 민형
    Participant
    @ssamture
    #6665

    필터 xmlrpc_wp_insert_post_data 후크를 이용해야합니다.

    즉, xmlrpc_wp_insert_post_data 데이터를 변형시켜주는 부분을 플러그인 형태로 만들어서 워드프레스 사이트에 적용해야하지만, 무리가 있을 것으로 보여집니다.

    그 이유는 해당 필터의 위치가 뒤쪽에 있기 때문에, terms에 slug를 넣으면 에러가 발생할 것이고, terms_name에 넣으면 slug명으로 카테고리를 추가하게 되기 때문입니다.

    따라서 코어 수정 없이 slug를 통하여 입력하는 것은 어려울 것 같습니다.

    꼭 해야한다면 wp.getCategory 를 통하여 카테고리를 전부 가져와서 입력할 슬러그를 비교해서 해당 아이디를 가져온 후 다시 wp.newPost를 통해 입력하는 방법을 해야할것 같습니다.

    Avatar of 김대현김대현
    Participant
    @myios
    #6666

    그러쿤요..그냥 코드 수정했습니다..

    기존에 있던 wp.newPosts 에서 3줄 추가 했어요.

    [code title=””]

    function gs_newPosts($args)

    {

    if ( ! $this->minimum_args( $args, 4 ) )

    return $this->error;

     

    $this->escape( $args );

     

    $blog_id        = (int) $args[0];

    $username       = $args[1];

    $password       = $args[2];

    $content_struct = $args[3];

     

    // 추가된 부분…

    $category = get_term_by(‘slug’, $content_struct[‘slug’], ‘category’);

    $content_struct[‘terms’] = array(“category” => array($category -> term_id));

     

    if ( ! $user = $this->login( $username, $password ) )

    return $this->error;

     

    do_action( ‘xmlrpc_call’, ‘wp.newPost’ );

     

    unset( $content_struct[‘ID’] );

    //추가

    unset( $content_struct[‘slug’] );

     

     

    return $this->_insert_post( $user, $content_struct );

    }

     

    [/code]

    Avatar of 082net082net
    Keymaster
    @082net
    #6669

    코어를 수정하시면 나중에 많이 후회하실거에요~ 보안 업그레이드도 맘대로 못하고 수정내역 항상 유지해야 하고 등등… 플러그인 생성하면 당시에는 조금 만들기 번거로울 수 있지만 용도별로 정리만 잘 해 놓으면 추가 기능 관리가 훨씬 수월해 집니다 🙂

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
    Avatar of 김대현김대현
    Participant
    @myios
    #6672

    저번에 플러그인 형태로 사용하는게 좋다고 하셔서

    플러그인으로 만들어서 사용중이애요.

    관심 감사합니다.

    [code title=””]

    <?php

     

    class pushService_xmlrpc_server

    {

    public function __construct()

    {

    add_filter(‘xmlrpc_methods’, array(&$this, ‘add_methods’) );

    }

     

    function add_methods($methods)

    {

    $methods[‘gs.pushServiceInsert’] = array(&$this, ‘gs_pushServiceInsert’);

    $methods[‘gs.test’] = array(&$this, ‘gs_test’);

    return $methods;

    }

     

    function gs_test($args)

    {

    //global $wpdb;

     

    $category = get_term_by(‘slug’, ‘foodmenu’, ‘category’);

     

    return $category -> term_id;

    }

     

    public function gs_pushServiceInsert($args)

    {

    global $blog_id;

     

    // 사용자 아이디, 패스워드

    $username = $args[0];

    $password = $args[1];

    // 데이터…

    $field    = $args[2];

     

    // 로그인 체크

    if(!wp_authenticate($username, $password))

    return falue;

     

    // 블로그 이름은 서버에서 처리하자..

    $defaultStruct = array(

    ‘blog_id’ => $blog_id,

    );

    $dataStruct = array_merge($defaultStruct, $field);

     

    return pushService_insert_db($dataStruct);

    }

    }

     

    $pushServuceXMLrpc = new pushService_xmlrpc_server();

     

    [/code]

5 글 보임 - 1에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.