2014-03-25 2 views
0

나는 wordpress posts 데이터베이스에 추가 정보를 추가해야하지만 그에 따라 추가 컬럼이없는 wordpress posts 테이블을 추가해야하는 웹 앱에서 작업하고 있습니다.Wordpress : wordpress posts 테이블에 필드 추가

그래서 내 필드를 삽입했습니다. favicon, image, domain JSON 피드의 기사를 모으기 때문에 기사에 대한 URL을 저장합니다.

그러나 데이터베이스에 게시물을 삽입하려고하면 게시물이 삽입되지만 기본 필드가 채워지는 동안 여분의 열은 공백으로 남습니다. 여기

내가 내가 이것은

게시물을 제가 아파치에서 얻을 오류 로그를 삽입으로 내 여분의 열을 채울 수있을 것 어떻게 데이터베이스

<?php 

require(dirname(__FILE__)."/../../../wp-config.php"); 

$json_feed = "http://digitalrand.net/api/url_data/?key=xxxxxx&pass=xxxxxxx%"; 
$json = file_get_contents($json_feed); 
$obj = json_decode($json, true); 

foreach($obj as $article_array){ 
    $url = $article_array['url']; 
    $domain = $article_array['domain']; 
    $favicon = $article_array['favicon']; 
    $title = $article_array['title']; 
    $category = $article_array['category']; 
    $large_summary = $article_array['summary']; 
    $sum = implode(',',$large_summary); 
    $images = $article_array['images']; 
    $i = reset($images); 

    $post = array(
     'post_title' => $title, 
     'post_content' => $sum, 
     'post_status' => 'publish', 
     'post_type' => 'post', 
     'comment_status' => 'closed', 
     'post_category' => $category, 
     'post_template' => 'content.php' 
     ); 

    wp_insert_post ($post, $wp_error); 

      $post_id = $wpdb -> insert_id; 

    $extra = array('post_image', 'post_favicon', 'post_domain'); 
    $data = array($image, $favicon, $domain); 

    add_post_meta($post_id, $extra, $data, true); 
?> 

에 삽입하는 방법입니다

PHP Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in C:\\wamp\\www\\abacus\\wp-includes\\wp-db.php on line 880 
PHP Stack trace: 
PHP 1. {main}() C:\\wamp\\www\\abacus\\wp-content\\themes\\twentyfourteen\\data.php:0 
PHP 2. add_post_meta() C:\\wamp\\www\\abacus\\wp-content\\themes\\twentyfourteen\\data.php:42 
PHP 3. add_metadata() C:\\wamp\\www\\abacus\\wp-includes\\post.php:1731 
PHP 4. wpdb->insert() C:\\wamp\\www\\abacus\\wp-includes\\meta.php:68 
PHP 5. wpdb->_insert_replace_helper() C:\\wamp\\www\\abacus\\wp-includes\\wp-db.php:1275 
PHP 6. wpdb->prepare() C:\\wamp\\www\\abacus\\wp-includes\\wp-db.php:1336 
PHP 7. array_walk() C:\\wamp\\www\\abacus\\wp-includes\\wp-db.php:1005 
PHP 8. wpdb->escape_by_ref() C:\\wamp\\www\\abacus\\wp-includes\\wp-db.php:1005 
PHP 9. wpdb->_real_escape() C:\\wamp\\www\\abacus\\wp-includes\\wp-db.php:952 
PHP 10. mysql_real_escape_string() C:\\wamp\\www\\abacus\\wp-includes\\wp-db.php:880 

게시물을 삽입했지만 post_meta가 데이터베이스에 삽입되지 않았기 때문에 나는 무엇을 잘못하고 있습니까?

모든 게시물이 표시되는 내 테마의 content.php 파일을 다음과 같이 추가했습니다.

<?php 
    $post_Id = get_the_ID(); 
    $favicon_values = get_post_meta($post_id, 'post_favicon', true); 
    echo $favicon_values; 
?> 

각 기사에 favicon_values를 표시해야하는 이유는 무엇입니까?

답변

0

favicon 도메인 & 다른 필드는 wp_postmeta 테이블에 삽입해야합니다. wp_postmeta 테이블은 wp_posts 테이블의 구조 변경보다 나은 방법입니다.

$post_id = wp_insert_post($post, $wp_error); 
//now you can use $post_id withing add_post_meta or update_post_meta 
<?php add_post_meta($post_id, 'post_favicon', $favicon, true) || update_post_meta($post_id, 'post_favicon', $favicon); ?> 

코드는 이와 같아야합니다.

+0

$ post array ... check edit에서 이미지, favicon 및 도메인을 제거했습니다. – Mutuma

+0

post_meta 필드 데이터를 배열에 추가했습니다 : 여분의 데이터와 배열에 삽입하려는 데이터 : $ data. 나는 wordpress codex와 add_post_meta를 정의한 방법으로 사용한다면, 키가 이미 존재하지 않는다면 새로운 커스텀 필드를 추가하거나 그렇지 않으면 커스텀 필드의 값을 그렇지 않으면 업데이트한다. 그래서 필자는 phpmyadmin에서 posts_meta 테이블의 필드를 생성 할 필요가 없다고 생각합니까? – Mutuma

+0

그리고 새로운 post_meta 데이터를 콘텐츠 페이지에 어떻게 표시합니까? – Mutuma