• Hi,
    I’m developing a theme with a front page that would have a grid of tiles/squares (3×3). Each of the square would have a title and would link to another page/post. What would be the best way of designing it so that it’s easy for an end user to choose the content for the front page. I can think of a way of doing it with ACF where the front page would also have a set of 18 fields (9 x (Tile title + Link to the page/post)) but I’d rather not force the user to install any plugins.

    Can you think of any other way of accomplishing it without extra plugins?

    Thanks

Viewing 3 replies - 1 through 3 (of 3 total)
  • Moderator bcworkz

    (@bcworkz)

    You can develop a theme settings page, or better yet, a customizer section, that allows users to select or indicate the desired posts. Your front page template code would then query for the selected posts and output the grid content.

    How you want users to select posts is up to you. Something like how pages can be selected to be linked to as menu items on the menus admin screen is one model. A series of fields where users paste in URLs will work.
    https://developer.www.ads-software.com/themes/customize-api/

    Thread Starter portia79

    (@portia79)

    OK. Thanks. Will set up a customiser section.

    Thread Starter portia79

    (@portia79)

    I was busy elsewhere and picked it up yesterday. I’m having problems adding a panel/section to the customizer file of the underscores starter theme. I’ve read the customizer section of the official documentation but cannot get anything to work or appear in the customizer dashboard.

    My addition is this bit:

     $wp_customize->add_panel( 'front', array(
            'title' => __( 'Front', 'Solar' ),
            'description' => 'my description', // Include html tags such as <p>.
            'priority' => 160, // Mixed with top-level-section hierarchy.
        ) );
        $wp_customize->add_section( 'front_section' , array(
            'title' => __('Footer_section', 'Solar'),
            'panel' => 'front',
        ) );

    A whole customizer file is as follows:

    <?php
    /**
     * Solar Theme Customizer
     *
     * @package Solar
     */
    
    /**
     * Add postMessage support for site title and description for the Theme Customizer.
     *
     * @param WP_Customize_Manager $wp_customize Theme Customizer object.
     */
    function Solar_customize_register( $wp_customize ) {
    	$wp_customize->get_setting( 'blogname' )->transport         = 'postMessage';
    	$wp_customize->get_setting( 'blogdescription' )->transport  = 'postMessage';
    	$wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
    
        $wp_customize->add_panel( 'front', array(
            'title' => __( 'Front', 'Solar' ),
            'description' => 'my description', // Include html tags such as <p>.
            'priority' => 160, // Mixed with top-level-section hierarchy.
        ) );
        $wp_customize->add_section( 'front_section' , array(
            'title' => __('Footer_section', 'Solar'),
            'panel' => 'front',
        ) );
    
    	if ( isset( $wp_customize->selective_refresh ) ) {
    		$wp_customize->selective_refresh->add_partial(
    			'blogname',
    			array(
    				'selector'        => '.site-title a',
    				'render_callback' => 'Solar_customize_partial_blogname',
    			)
    		);
    		$wp_customize->selective_refresh->add_partial(
    			'blogdescription',
    			array(
    				'selector'        => '.site-description',
    				'render_callback' => 'Solar_customize_partial_blogdescription',
    			)
    		);
    	}
    }
    add_action( 'customize_register', 'Solar_customize_register' );
    
    /**
     * Render the site title for the selective refresh partial.
     *
     * @return void
     */
    function Solar_customize_partial_blogname() {
    	bloginfo( 'name' );
    }
    
    /**
     * Render the site tagline for the selective refresh partial.
     *
     * @return void
     */
    function Solar_customize_partial_blogdescription() {
    	bloginfo( 'description' );
    }
    
    /**
     * Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
     */
    function Solar_customize_preview_js() {
    	wp_enqueue_script( 'Solar-customizer', get_template_directory_uri() . '/js/customizer.js', array( 'customize-preview' ), _S_VERSION, true );
    }
    add_action( 'customize_preview_init', 'Solar_customize_preview_js' );
    

    I just want to add a new panel/section with a text input field.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Set of posts for the front page’ is closed to new replies.