将元键添加到所有帖子 - 自定义帖子类型

时间:2014-11-16 10:43:15

标签: php wordpress

我实际上是在一周前写过这个函数,但是我没有保存它并且很难再把它搞清楚。

这是我写的一个不同的函数,它根据图像大小添加元键'orientation'和各自的值。我想将它转换为我可以在我的functions.php中插入的函数,并运行一次以将字段添加到所有现有帖子,然后将其删除。

我尝试了很多不同的方法。任何和所有的帮助将不胜感激。

add_action( 'save_post_portfolio', 'add_orientation' );
function add_orientation($post_ID) {
    global $wpdb;

            $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
            $orientation = get_post_meta($post->ID, 'orientation', TRUE);
            if($orientation != '') {
            }
            elseif($post_thumbnail_id) {
            $image = wp_get_attachment_image_src( $post_thumbnail_id, 'full' );
            if($image[1] >= 0 && $image[2] >= 650) {
            add_post_meta($post_ID, 'orientation', 'portrait');
            }
            elseif($image[1] >= 0 && $image[2] <= 650) {
            add_post_meta($post_ID, 'orientation', 'landscape');
            }
        }   

}

2 个答案:

答案 0 :(得分:0)

我不确定,但应该工作。 试试这个: 主要功能:

function get_post_meta_data($post_id){
global $wpdb;
$wpdb->query("SELECT 'post_id','meta_key','meta_value' FROM $wpdb->postmeta WHERE 'post_id' = $post_id");
foreach($wpdb->last_result as $k => $v){
    //data:
    //$v->meta_key == meta_key of post 
    //$v->meta_value == meta_value of post
    //$post_id == post id
    /*
    Do here what you want
    */
};
}

和一次启动功能:

function update_meta_orientation()
{
global $wpdb;
//get all post id:
$wpdb->query("SELECT 'post_id' FROM $wpdb->postmeta");
//call function for each post
foreach($wpdb->last_result as $key => $value)
    {
    get_post_meta_data($value->post_id);
    }
}

答案 1 :(得分:0)

我不确定Sysanin代码与我的答案有什么关系,但我写了一个最终有效的解决方案

$args = array( 'numberposts' => -1, 'post_type' => 'portfolio' );
$postslist = get_posts( $args );
foreach ($postslist as $post) :  setup_postdata($post);
            $post_id = get_the_ID();
            $post_thumbnail_id = get_post_thumbnail_id( $post_id );
            $orientation = get_post_meta($post_id, 'orientation', TRUE);
            if($orientation =='') {
            if($post_thumbnail_id) {
            $image = wp_get_attachment_image_src( $post_thumbnail_id, 'full' );
            if($image[1] >= 0 && $image[2] >= 650) {
            add_post_meta($post_id, 'orientation', 'portrait');
            }
            elseif($image[1] >= 0 && $image[2] <= 650) {
            add_post_meta($post_id, 'orientation', 'landscape');
            }
        }   
    }
    else {
    }
endforeach;

然后在这里它被剥夺了任何人的使用

$args = array( 'numberposts' => -1, 'post_type' => 'cpt' );
$postslist = get_posts( $args );
foreach ($postslist as $post) :  setup_postdata($post);
$post_id = get_the_ID(); // use this variable
// do stuff here          
endforeach;