我实际上是在一周前写过这个函数,但是我没有保存它并且很难再把它搞清楚。
这是我写的一个不同的函数,它根据图像大小添加元键'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');
}
}
}
答案 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;