Support » Plugin: Developer's Custom Fields » Page templates and retrieving values

  • I don’t know if this is a plugin glitch or if I’m configuring things wrong. I’m using the code below as an init in functions.php for an image uploader field one a page that uses the page-template.php template:

    array(
    'name'          => 'fbdefaultimage',
    'label'         => 'Facebook Default Image - <em>image can be up to to 300px width 300px height</em>',
    'type'          => 'file',
    'scope'         => array( 'template' => array( 'page-hometemplate.php' ) ),
    'capabilities'  => array( 'edit_posts' ),
    ),

    and that works, and then I’m calling the image this way in header.php:

    <?php $imageid = slt_cf_field_value("headerimage");?>
    <img src="<?php echo wp_get_attachment_url( $imageid ); ?>">

    But the image will only appear with the home page that uses page-hometemplate.php. On any other page templates, the value is empty. And if I get rid of the scope call, the image uploader appears in all page editors. How do I call the field value in the function above so the image appears no matter what page template is being used by the front end page but the uploader box only appears in the editor of a page that uses that template? Thanks….

    http://wordpress.org/extend/plugins/developers-custom-fields/

Viewing 4 replies - 1 through 4 (of 4 total)
  • Plugin Author Steve Taylor

    (@gyrus)

    I think what you’re looking for is something like this. If the ID of the page that uses that template is 123, this code should work:

    <?php $imageid = slt_cf_field_value( "headerimage", "post", 123 );?>

    Check here for full documentation on this function:

    http://sltaylor.co.uk/wordpress/plugins/slt-custom-fields/docs/#functions-values

    I’m not sure you’re going about this in the right way, though. If there are options that aren’t page- or post-specific, wouldn’t they be better off in a theme options page? The code for the file selection button is designed to be used outside the plugin on things like theme options pages too:

    http://sltaylor.co.uk/wordpress/plugins/slt-custom-fields/docs/#functions-file

    Thread Starter Mark Ratledge

    (@songdogtech)

    Thanks, that works great, using the page ID and post type. So now both images I’m uploading appear across the site. I’m still learning DCF and it’s powerful, but I’m kind of a beginner with php.

    I thought about using a theme options framework for these two images and have it appear in the theme menu rather than DCF. But I’m using DCF for other text fields, and the options frameworks I found were needlessly complex for what I needed; and none of the theme options supported more than one image uploader (which can be fixed, but it was beyond me).

    But I am moving the image uploaders into a theme options structure. I found a very basic theme options panel and have that working, and am using

    <?php slt_cf_file_select_button( $name = 'facebookimage', $value ='whatgoeshere?', $label = 'Select file', $preview_size = 'thumbnail', $removable = true ); ?>

    in the theme panel. (BTW, what do I use for $value above?). It will upload an image, but I don’t get a “Save” button, so that must be a problem with the init that usually goes in functions.php, below. How to I get that to work with the options panel instead of a page template? Do you have any examples of using DCF in theme options I can see?

    if ( function_exists( 'slt_cf_register_box') )
    add_action( 'init', 'register_options_fields' );
    
    function register_options_fields() {
    slt_cf_register_box( array(
    
    	'type' => 'post',
    	'title' => ' ',
    	'id' => 'content-boxes',
    	'context' => 'normal',
    	'priority' => 'high',
    	'fields' => array(
    
    //Facebook default image
    
    array(
    	'name' => 'fbdefaultimage',
    	'label' => 'Facebook Default Image - <em>image can be up to to 300px width 300px height</em>',
    	'type' => 'file',
    	'capabilities'  => array( 'edit_posts' ),
    ),
    
    // Header Image
    
    array(
    	'name' => 'headerimage',
    	'label' => 'Header image - <em>image must be 150px width 150px height</em>',
    	'type' => 'file',
    	'capabilities'  => array( 'edit_posts' ),
    ),
    )
    ));
    }
    Plugin Author Steve Taylor

    (@gyrus)

    I don’t have any theme options examples that would be useful to you. I’ve always just rolled my own from tutorials, and they’re pretty idiosyncratic (i.e. there’s no “template” that would be easy for you to adapt).

    I’m sure there’s a million good tutorials on how to create a theme options page from scratch. Just follow one and use slt_cf_file_select_button() where appropriate. You might like to view source in a browser to see what it outputs. The actual field holding the attachment’s ID is a hidden field, named as you’ve requested.

    As for $value, check the source for that function – it’s all PHPdoc’d. It says: “The current value for the field (a media attachment ID).”

    Thread Starter Mark Ratledge

    (@songdogtech)

    Thanks, I’ve been viewing source and also using debug, but can’t suss out the issues. But for now, I can get along without a theme options page. Your plugin works very well and is very flexible, so I’ll keep using it.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Page templates and retrieving values’ is closed to new replies.