i have this code.
<?php
add_action('add_meta_boxes', 'ct_meta_add');
add_action('save_post','ct_meta_save');
add_action('save_post','ct_parent');
// add meta functions
function ct_meta_add() {
add_meta_box(
'ct_chap', //id
'Thông tin chương', //title
'ct_meta_show', //callback function
'chap', //post type
'normal' //priority
);
}
function get_blogspot_url($string) {
preg_match_all('/<a href="(.*?)"/', $string, $matches);
$string = '';
foreach($matches[1] as $val) {
$string .= $val."n";
}
$string = str_replace('s1600', 's0', $string);
return $string;
}
// save meta functions
function ct_meta_save() {
global $post;
/* Save meta */
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( !wp_verify_nonce( $_POST['ct_nonce'], plugin_basename( __FILE__ ) ) ) return;
if( !current_user_can( 'edit_post' ) ) return;
$meta = array('ct_download_link', 'ct_list_url', 'ct_list_url2');
foreach($meta as $dt) {
if($dt == 'ct_list_url2') {
$_POST[$dt] = get_blogspot_url($_POST[$dt]);
}
if(isset($_POST[$dt]) && $_POST[$dt] !== '') {
update_post_meta($post->ID, $dt, $_POST[$dt]);
} else {
delete_post_meta($post->ID, $dt);
}
}
}
?>
<?php
function ct_parent() {
global $post;
if($_POST['ct_truyen'] && $_POST['ct_truyen'] != "") {
//lÆ°u hoặc thay Äá»i truyá»n của chap
$ct_post = array();
$ct_post['ID'] = $post->ID;
$ct_post['post_parent'] = $_POST['ct_truyen'];
//thay Äá»i thá»i gian cáºp nháºt truyá»n
$tr_post = array();
$tr_post['ID'] = $_POST['ct_truyen'];
$tr_post['post_modified_gmt'] = current_time('mysql');
$tr_post['post_modified'] = current_time('mysql',7);
remove_action('save_post','ct_parent');
remove_action('save_post','tr_parent');
wp_update_post($ct_post);
wp_update_post($tr_post);
add_action('save_post','ct_parent');
}
}
?>
<?php //save_meta function
function ct_meta_show() { ?>
<?php
global $post;
$ct_download_link = get_post_meta($post->ID, 'ct_download_link', true) ? get_post_meta($post->ID, 'ct_download_link', true) : '';
$ct_list_url = get_post_meta($post->ID, 'ct_list_url', true) ? get_post_meta($post->ID, 'ct_list_url', true) : '';
$ct_list_url2 = get_post_meta($post->ID, 'ct_list_url2', true) ? get_post_meta($post->ID, 'ct_list_url2', true) : '';
?>
<?php wp_nonce_field(plugin_basename(__FILE__), 'ct_nonce'); ?>
<table class="form-table">
<tbody>
<tr>
<th><label for="ct_download_link">Truyá»n</label><a class="add-chap-truyen" href="<?php echo admin_url('post-new.php?post_type=truyen'); ?>">thêm truyá»n</a></th>
<td>
<?php
global $post;
global $wpdb;
$query = "SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'truyen' AND post_status = 'publish' ORDER BY post_title";
$results = $wpdb->get_results($query, OBJECT);
echo '<select name="ct_truyen" id="ct_truyen">';
if(!$_GET['truyen_id'] || !get_the_title($_GET['truyen_id'])) {
echo '<option value = "">None</option>';
foreach ($results as $r) {
echo '<option value="', $r->ID, '"', $r->ID == $post->post_parent ? ' selected="selected"' : '', '>', $r->post_title, '</option>';
}
} else {
foreach ($results as $r) {
echo '<option value="', $r->ID, '"', $r->ID == $_GET['truyen_id'] ? ' selected="selected"' : '', '>', $r->post_title, '</option>';
}
}
echo '</select>';
?>
</td>
</tr>
<tr>
<th><label for="ct_download_link">Äá»a chá» tải chÆ°Æ¡ng</label></th>
<td><input type="text" name="ct_download_link" class="regular-text" value="<?php echo $ct_download_link; ?>"/></td>
</tr>
<tr>
<th><label for="ct_list_url">Äá»a chỠảnh Äá»c online</label></th>
<td>
<label for="ct_list_url">Äá»a chỠảnh 1</label>
<p><textarea name="ct_list_url" rows="20" class="large-text code"><?php echo $ct_list_url; ?></textarea></p>
<label for="ct_list_url2">Äá»a chỠảnh 2</label>
<p><textarea name="ct_list_url2" rows="20" class="large-text code"><?php echo $ct_list_url2; ?></textarea></p>
</td>
</tr>
</tbody>
</table>
<?php } ?>
<?php
//auto chap title
add_filter( 'default_title', 'ct_auto_title');
function ct_auto_title($title) {
if($_GET['truyen_id'] && get_the_title($_GET['truyen_id'])) {
$chap_number = get_number_chap($_GET['truyen_id']);
$title = get_the_title($_GET['truyen_id']) . ' chÆ°Æ¡ng ' . ($chap_number+1);
return $title;
} else {
return $title;
}
}
function ct_remove_excess_columns( $columns ) {
unset($columns['author']);
unset($columns['comments']);
unset($columns['wpseo-score']);
unset($columns['wpseo-title']);
unset($columns['wpseo-focuskw']);
unset($columns['wpseo-metadesc']);
return $columns;
}
add_filter( 'manage_edit-chap_columns' , 'ct_remove_excess_columns' );
?>
everything is OK, but when i was saving, the function get_blogspot_url($_POST[$dt])
didn’t work because $_POST[$dt].
When i replace get_blogspot_url($_POST[$dt])
with,
get_blogspot_url('<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-sfO5YNlgW0Y/UFCaPberRcI/AAAAAAAAANM/1ccm6QRHxLM/s1600/0000.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-sfO5YNlgW0Y/UFCaPberRcI/AAAAAAAAANM/1ccm6QRHxLM/s320/0000.png" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-a1bQNURFQU0/UFCaRm88fwI/AAAAAAAAANU/uDnHUsvNvS8/s1600/img000005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-a1bQNURFQU0/UFCaRm88fwI/AAAAAAAAANU/uDnHUsvNvS8/s320/img000005.png" width="199" /></a></div>
<br />')
it works, so i think $_POST[$dt] have problem, can you help me?
You can download php file: https://dl.dropbox.com/u/52812919/chap-meta.rar 🙁
Sorry about my bad english
From what I can see there is no value set for
ct_list_url2
, when this code block executes,…in fact that goes for any of the values held with in your
$meta
array. Your posted values are no where to be found so you need to pass them into your function.Instead try something like,
You need to be careful though because if any of your submitted POST variables have a
$key
that returns an empty$val
then yourelse
condition will run and delete any meta values stored for the given$key
. So if there was a value previously stored in that field it will be deleted. Not sure if this is your intended goal?If you only want to run your
ct_list_url2
POST variable through yourget_blogspot_url
function, excluding the other$keys
then you can do something like,I hope that helps!
Just change this line:
to