Asadar,

Lucrand mai tot timpul cu wordpress, doresc sa arat celor interesati cum pot sa iti customizeze o tema standard pe platforma wordpress pentru sistemul de afiliere 2parale, in care pot introduce link-ul de afiliat direct in admin panel, fara sa puna butonul in post, etc...

Asadar, pe scurt:

1. trebuie modificat fisierul function.php din tema wordpress
2. trebuie modificat fisierul single.php (content-single.php la alte teme).

Pe larg:

1. Deschidem fisierul function.php in care introducel urmatorul cod care va aparea in admin panel, la adaugarea / modificarea unui post.

Cod PHP:
<?php

$sp_boxes 
= array (
    
'Informatii afiliere' => array (
        array( 
'imgprodus''Imaginea produsului: http://numesite.com/imagini/sony-vayo.jpg' ),
        array( 
'linkafiliat''Link afiliat:' ),
        array( 
'pret''Pret produs:' ),
    ),

// Do not edit past this point.

// Use the admin_menu action to define the custom boxes
add_action'admin_menu''sp_add_custom_box' );

// Use the save_post action to do something with the data entered
// Save the custom fields
add_action'save_post''sp_save_postdata'1);

// Adds a custom section to the "advanced" Post and Page edit screens
function sp_add_custom_box() {
    global 
$sp_boxes;

    if ( 
function_exists'add_meta_box' ) ) {

        foreach ( 
array_keys$sp_boxes ) as $box_name ) {
            
add_meta_box$box_name__$box_name'sp' ), 'sp_post_custom_box''post''normal''high' );
        }
    }
}

function 
sp_post_custom_box $obj$box ) {
    global 
$sp_boxes;
    static 
$sp_nonce_flag false;

    
// Run once
    
if ( ! $sp_nonce_flag ) {
        
echo_sp_nonce();
        
$sp_nonce_flag true;
    }

    
// Genrate box contents
    
foreach ( $sp_boxes[$box['id']] as $sp_box ) {
        echo 
field_html$sp_box );
    }
}

function 
field_html $args ) {

    switch ( 
$args[2] ) {

        case 
'textarea':
            return 
text_area$args );

        case 
'checkbox':
            
// To Do

        
case 'radio':
            
// To Do

        
case 'text':
        default:
            return 
text_field$args );
    }
}

function 
text_field $args ) {
    global 
$post;

    
// adjust data
    
$args[2] = get_post_meta($post->ID$args[0], true);
    
$args[1] = __($args[1], 'sp' );

    
$label_format =
          
'<label for="%1$s">%2$s</label><br />'
        
'<input style="width: 95%%;" type="text" name="%1$s" value="%3$s" /><br /><br />';

    return 
vsprintf$label_format$args );
}

function 
text_area $args ) {
    global 
$post;

    
// adjust data
    
$args[2] = get_post_meta($post->ID$args[0], true);
    
$args[1] = __($args[1], 'sp' );

    
$label_format =
          
'<label for="%1$s">%2$s</label><br />'
        
'<textarea style="width: 95%%;" name="%1$s">%3$s</textarea><br /><br />';

    return 
vsprintf$label_format$args );
}

/* When the post is saved, saves our custom data */
function sp_save_postdata($post_id$post) {
    global 
$sp_boxes;

    
// verify this came from the our screen and with proper authorization,
    // because save_post can be triggered at other times
    
if ( ! wp_verify_nonce$_POST['sp_nonce_name'], plugin_basename(__FILE__) ) ) {
        return 
$post->ID;
    }

    
// Is the user allowed to edit the post or page?
    
if ( 'page' == $_POST['post_type'] ) {
        if ( ! 
current_user_can'edit_page'$post->ID ))
            return 
$post->ID;

    } else {
        if ( ! 
current_user_can'edit_post'$post->ID ))
            return 
$post->ID;
    }

    
// OK, we're authenticated: we need to find and save the data
    // We'll put it into an array to make it easier to loop though.

    // The data is already in $sp_boxes, but we need to flatten it out.
    
foreach ( $sp_boxes as $sp_box ) {
        foreach ( 
$sp_box as $sp_fields ) {
            
$my_data[$sp_fields[0]] =  $_POST[$sp_fields[0]];
        }
    }

    
// Add values of $my_data as custom fields
    // Let's cycle through the $my_data array!
    
foreach ($my_data as $key => $value) {
        if ( 
'revision' == $post->post_type  ) {
            
// don't store custom data twice
            
return;
        }

        
// if $value is an array, make it a CSV (unlikely)
        
$value implode(',', (array)$value);

        if ( 
get_post_meta($post->ID$keyFALSE) ) {

            
// Custom field has a value.
            
update_post_meta($post->ID$key$value);


        } else {

            
// Custom field does not have a value.
            
add_post_meta($post->ID$key$value);
        }

        if (!
$value) {

            
// delete blanks
            
delete_post_meta($post->ID$key);
        }
    }
}

function 
echo_sp_nonce () {

    
// Use nonce for verification ... ONLY USE ONCE!
    
echo sprintf(
        
'<input type="hidden" name="%1$s" id="%1$s" value="%2$s" />',
        
'sp_nonce_name',
        
wp_create_nonceplugin_basename(__FILE__) )
    );
}

// A simple function to get data stored in a custom field
if ( !function_exists('get_custom_field') ) {
    function 
get_custom_field($field) {
       global 
$post;
       
$custom_field get_post_meta($post->ID$fieldtrue);
       echo 
$custom_field;
    }
}

?>
2. Deschidem fisierul single.php (content-single.php la anumite teme) si vom insera urmatorul cod acolo unde dorim sa ne apara informatiile adaugate in admin panel:

Cod PHP:
<?php if( get_post_meta($post->ID"imgprodus"true) ): ?>
<img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php $values get_post_custom_values("imgprodus"); echo $values[0]; ?>&amp;w=200&amp;zc=1&amp;q=200" alt="<?php the_title(); ?>"><?php endif; ?>
<a href="<?php $values get_post_custom_values("linkafiliat"); echo $values[0]; ?>" target="_blank"><img src="http://www.lanting.com/graphics/buy-button.jpg" border="0" /></a>
Pret:<?php $values get_post_custom_values("pret"); echo $values[0]; ?> <?php if( get_post_meta($post->ID"pret"true) ): ?>
<?php 
endif; ?>
Aici eu am pus ca exemplu un buton (http://www.lanting.com/graphics/buy-button.jpg) care poate fi modificat de catre voi ori prin link, buton, text, etc...

Deasemenea, codul de mai sus poate fi aranjat in pagina wordpress dupa bunul dvs plac (ex: imaginea in dreapta, pretul in stanga, butonul la mijloc, etc...)

In codul de mai sus am folosit imagine pusa direct pe host, si pentru a functiona mai aveti nevoie si de un fisier numit: timthumb.php care in puteti descarca de aici si trebuie urcat pe host in folderul temei.

Daca intampinati probleme, aveti intrebari, nelamururi va stau la dispozitie cu cea mai mare placere.

Enjoy ...