Pagina 1 di 1

modificare php..help!

MessaggioInviato: ven giu 18, 2010 6:06 pm
da Martina Stella
Salve a tutti ho trovato un plugin che permette di inserire gli articoli nelle diverse pagine del sito. Il problema è che riporta soltanto i titoli degli articoli. I vorrei che apparisse un riassunto, magari sfruttando anche il plugin Evermore che già ho. comunque questo plugin è Post Page Associator.

Credo davvero che basti poco però io non so come modificare il php e quindi lascio a voi....

<?php

/*

Plugin Name: Post Page Associator
Plugin URI: http://dennishoppe.de/wordpress-plugins ... associator
Description: The Post-Page-Associator enables you to attach posts to a page.
Version: 1.2.12
Author: Dennis Hoppe
Author URI: http://DennisHoppe.de

*/


// Please think about a donation
If (Is_File(DirName(__FILE__).'/donate.php')) Include DirName(__FILE__).'/donate.php';


If (!Class_Exists('wp_plugin_associate_posts_and_pages')){
Class wp_plugin_associate_posts_and_pages {
var $base_url;
var $text_domain;
var $current_post;

Function __construct(){
// Read base
$this->base_url = get_bloginfo('wpurl').'/'.Str_Replace("\\", '/', SubStr(RealPath(DirName(__FILE__)), Strlen(ABSPATH)));

// Get ready to translate
$this->Load_TextDomain();

// This Plugin supports post thumbnails
If (Function_Exists('Add_Theme_Support'))
Add_Theme_Support('post-thumbnails');

// Hooks
If (Is_Admin()){
Add_Action('admin_menu', Array($this, 'add_settings_page'));
Add_Action('admin_menu', Array($this, 'save_settings_page'));

Add_Action('admin_menu', Array($this, 'add_meta_box'));
Add_Action('save_post', Array($this, 'save_meta_box'));

Add_Action('admin_head', Array($this, 'add_admin_header'));
}
Else {
Add_Filter('the_content', Array($this, 'filter_content'), 9);
}

// Shortcodes
Add_Shortcode('associated_posts', Array($this, 'shortcode'));
}

Function Load_TextDomain(){
$this->text_domain = get_class($this);
load_textdomain ($this->text_domain, DirName(__FILE__).'/language/'.get_locale().'.mo');
}

Function t ($text, $context = ''){
// Translates the string $text with context $context
If ($context == '')
return __($text, $this->text_domain);
Else
return _x($text, $context, $this->text_domain);
}

Function get_setting_key(){ return __CLASS__; }

Function get_meta_key(){ return '_' . __CLASS__; }

Function add_settings_page (){
add_settings_field( get_class($this), $this->t('Associated posts'), Array($this, 'print_settings_page'), 'reading' );
}

Function print_settings_page(){ Include DirName(__FILE__).'/settings_page.php'; }

Function save_settings_page(){
// Check if there is a post request
If ( !Empty($_POST) && $_POST['option_page'] == 'reading' && $_POST['action'] == 'update' )
$settings = (Array) $_POST[self::get_setting_key()];
Else return;

// Store
update_option(self::get_setting_key(), $settings);
}

Function load_setting($key = Null, $default = False){
$arr_setting = (Array) get_option(self::get_setting_key());
If ($key == Null) return $arr_setting;
ElseIf (IsSet ($arr_setting[$key])) return $arr_setting[$key];
Else return $default;
}

Function add_meta_box(){
Add_Meta_Box( get_class($this), $this->t('Associate posts with this page'), Array($this, 'print_meta_box'), 'page', 'advanced', 'high' );
}

Function print_meta_box(){ Include DirName(__FILE__).'/meta_box.php'; }

Function save_meta_box($post_id){
// If this is an autosave we dont care
If ( Defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;

// Check if the user want to attach posts
If ( IsSet ($_POST[$this->get_setting_key()]) &&
!Empty($_POST[$this->get_setting_key()]) &&
!( Empty($_POST[$this->get_setting_key()]['category']) &&
Empty($_POST[$this->get_setting_key()]['tag']) &&
Empty($_POST[$this->get_setting_key()]['author']) &&
Empty($_POST[$this->get_setting_key()]['post']) )
)
{
$arr_settings = (Array) $_POST[$this->get_setting_key()];
update_post_meta ($post_id, $this->get_meta_key(), $arr_settings);
}
Else {
delete_post_meta ($post_id, $this->get_meta_key());
}

}

Function add_admin_header(){ ?>
<link type="text/css" rel="stylesheet" href="<?php echo $this->base_url?>/admin.css" />
<?php
}

Function field_name ($key){ return self::get_setting_key().'['.$key.']'; }

Function shortcode($attr){
Global $post;

// Convert $attr to an array
$attr = (Array) $attr;

// Check if there are association_settings
If ( !self::has_associated_posts() ) return False;

// Find the right template file
If (Is_File(get_template_directory().'/associated-posts.php')){
$template_file = get_template_directory().'/associated-posts.php';
}
ElseIf (Is_File(DirName(__FILE__).'/template.php')){
$template_file = DirName(__FILE__).'/template.php';
}

// Uses filter
$template_file = Apply_Filters('associated_posts_template', $template_file);

// Look whats the current post
If (Is_Object($post)) $this->current_post = clone $post;

// Use the template
Ob_Start();
Include $template_file;
$result = Ob_get_Contents();
Ob_End_Clean();

// Restore post data
If (Is_Object($this->current_post)) $post = clone $this->current_post;
Unset ($this->current_post);
setup_postdata($post);

// return code
return $result;
}

Function has_associated_posts($post_id = Null){
/*
This function is deprecated!
I will remove it in the next releases!
*/
$association = self::get_association_data($post_id);

// Check if there are settings
If ( Empty($association['category']) &&
Empty($association['tag']) &&
Empty($association['author']) &&
Empty($association['post'])
)
return False;
Else
return True;

}

Function get_association_data($post_id = Null){
If ($post_id == Null){
Global $post;
$post_id = $post->ID;
}

$meta = Array_Merge(Array(
'category_select_mode' => 'one',
'category' => Array(),
'tag_select_mode' => 'or_one',
'tag' => Array(),
'author_select_mode' => 'or',
'author' => Array(),
'post' => Array(),
'post_limit' => '',
'order_by' => 'date',
'order' => 'ASC'
), (Array) get_post_meta($post_id, self::get_meta_key(), True));

return $meta;
}

Function get_associated_posts ($post_id = Null){
// If there is no post_id we try to ready it
If ($post_id == Null) $post_id = get_the_id();

// If there is even no post_id we bail out
If (!$post_id) return False;

// read the associated category
$association = self::get_association_data($post_id);

// Filter posts
$arr_post_category = Array();
$arr_post_tag = Array();
$arr_post_author = Array();
$arr_post = Array();

// By Category
If (!Empty($association['category']))
If ($association['category_select_mode'] == 'or_one' || $association['category_select_mode'] == 'and_one')
$arr_post_category = self::get_post_ids_by_category($association['category'], 'or');
ElseIf ($association['category_select_mode'] == 'or_all' || $association['category_select_mode'] == 'and_all')
$arr_post_category = self::get_post_ids_by_category($association['category'], 'and');

// By Tag
If (!Empty($association['tag']))
If ($association['tag_select_mode'] == 'or_one' || $association['tag_select_mode'] == 'and_one')
$arr_post_tag = self::get_post_ids_by_tag($association['tag'], 'or');
ElseIf ($association['tag_select_mode'] == 'or_all' || $association['tag_select_mode'] == 'and_all')
$arr_post_tag = self::get_post_ids_by_tag($association['tag'], 'and');

// By Author
If (!Empty($association['author']))
If ($association['author_select_mode'] == 'or' || $association['author_select_mode'] == 'and')
$arr_post_author = self::get_post_ids_by_author($association['author']);


// Add to the selected posts
// Add Categories
If ($association['category_select_mode'] == 'or_one' || $association['category_select_mode'] == 'or_all')
$arr_post = Array_Merge ($arr_post, $arr_post_category);

// Add Tags
If ($association['tag_select_mode'] == 'or_one' || $association['tag_select_mode'] == 'or_all')
$arr_post = Array_Merge ($arr_post, $arr_post_tag);

// Add Author
If ($association['author_select_mode'] == 'or')
$arr_post = Array_Merge ($arr_post, $arr_post_author);


// Filter the selected posts
// Filter Categories
If ($association['category_select_mode'] == 'and_one' || $association['category_select_mode'] == 'and_all')
$arr_post = Array_Intersect ($arr_post, $arr_post_category);

// Filter Tags
If ($association['tag_select_mode'] == 'and_one' || $association['tag_select_mode'] == 'and_all')
$arr_post = Array_Intersect ($arr_post, $arr_post_tag);

// Filter Author
If ($association['author_select_mode'] == 'and')
$arr_post = Array_Intersect ($arr_post, $arr_post_author);

// Add the additional posts
$arr_post = Array_Merge ($arr_post, (Array) $association['post']);

// There are no posts we have to care about
If (Empty($arr_post)) return False;

return new WP_Query(Array(
'post__in' => $arr_post,
'posts_per_page' => $association['post_limit'] == '' ? -1 : IntVal($association['post_limit']),
'orderby' => $association['order_by'],
'order' => $association['order'],
'caller_get_posts' => 1
));
}

Function get_post_ids_by_category ($arr_category, $operator = 'OR'){
$arr_category = (Array) $arr_category;
$operator = StrToLower ($operator);
$result = Array();

// Get the posts
If ($operator == 'or'){
ForEach ($arr_category AS $category){
$query = New WP_Query(Array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'category__in' => $arr_category
));
$result = Array_Merge ($result, self::extract_post_ids($query));
}
$result = Array_Unique ($result);
}
ElseIf ($operator == 'and'){
$query = New WP_Query(Array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'caller_get_posts' => 1,
'category__and' => $arr_category
));
$result = self::extract_post_ids($query);
}

return $result;
}

Function get_post_ids_by_tag ($arr_tag, $operator = 'OR'){
$arr_tag = (Array) $arr_tag;
$operator = StrToLower ($operator);
$result = Array();

// Get the posts
If ($operator == 'or'){
ForEach ($arr_tag AS $tag){
$query = New WP_Query(Array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'caller_get_posts' => 1,
'tag__in' => $arr_tag
));
$result = Array_Merge ($result, self::extract_post_ids($query));
}
$result = Array_Unique ($result);
}
ElseIf ($operator == 'and'){
$query = New WP_Query(Array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'caller_get_posts' => 1,
'tag__and' => $arr_tag
));
$result = self::extract_post_ids($query);
}

return $result;
}

Function get_post_ids_by_author($arr_author_id){
$arr_author_id = (Array) $arr_author_id;
$result = Array();

// Get all posts by these authors
ForEach ($arr_author_id AS $author_id){
$query = New WP_Query(Array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'caller_get_posts' => 1,
'author' => $author_id
));
$result = Array_Merge ($result, self::extract_post_ids($query));
}

// Clean the array
return Array_Unique ($result);
}

Function extract_post_ids($wp_query){
$result = Array();

If ($wp_query && Is_Array($wp_query->posts)){
ForEach ($wp_query->posts AS $p)
$result[] = $p->ID;
}

return $result;
}

Function filter_content($content){
$template_file = Apply_Filters('associated_posts_auto_append', True);

// Append the ShortCode to the Content
If ( StrPos($content, '[associated_posts]') === False && // Avoid double inclusion of the ShortCode
StrPos($content, '[associated_posts ') === False && // Without closing bracket to find ShortCodes with attributes
Apply_Filters('associated_posts_auto_append', True) // You can use this filter to control the auto append feature
)
// Add the ShortCode to the current content
return $content . "\r\n[associated_posts]\r\n";
Else
// the shortcode is already in the content / the filter says no
return $content;
}

Function get_post_thumbnail($post_id = Null, $size = 'thumbnail'){
/* Return Value: An array containing:
$image[0] => attachment id
$image[1] => url
$image[2] => width
$image[3] => height
*/
If ($post_id == Null) $post_id = get_the_id();

If (Function_Exists('get_post_thumbnail_id') && $thumb_id = get_post_thumbnail_id($post_id) )
return Array_Merge ( Array($thumb_id), wp_get_attachment_image_src($thumb_id, $size) );
ElseIf ($arr_thumb = self::get_post_attached_image($post_id, 1, 'RAND', $size))
return $arr_thumb[0];
Else
return False;
}

Function get_post_attached_image($post_id = Null, $number = 1, $orderby = 'RAND', $image_size = 'thumbnail'){
If ($post_id == Null) $post_id = get_the_id();
$number = IntVal ($number);
$arr_attachment = get_posts (Array( 'post_parent' => $post_id,
'post_type' => 'attachment',
'numberposts' => $number,
'post_mime_type' => 'image',
'orderby' => $orderby ));

// Check if there are attachments
If (Empty($arr_attachment)) return False;

// Convert the attachment objects to urls
ForEach ($arr_attachment AS $index => $attachment){
$arr_attachment[$index] = Array_Merge ( Array($attachment->ID), wp_get_attachment_image_src ($attachment->ID, $image_size));
/* Return Value: An array containing:
$image[0] => attachment id
$image[1] => url
$image[2] => width
$image[3] => height
*/
}

return $arr_attachment;
}

Function get_authors(){
$arr_author = Array();

ForEach ( (Array) get_author_user_ids() AS $author_id)
$arr_author[] = get_userdata( $author_id );

If (Empty($arr_author))
return False;
Else
return $arr_author;
}

Function get_all_posts(){
$post_query = new WP_Query(Array(
'post_type' => 'post',
'posts_per_page' => -1,
'post_status' => 'publish',
'caller_get_posts' => 1
));

return $post_query->posts;
}

} /* End of Class */
New wp_plugin_associate_posts_and_pages();
} /* End of If-Class-Exists-Condition */
/* End of File */

grazie