Support » Code oplossingen gezocht » aangepaste permalink op basis van custom field

  • Opgelost TheHappyFive

    (@thehappyfive)


    Dag allen,
    Ik maak gebruik van de Toolset plugin. Voor 2 custom post types wordt de standaard “Titel” bij een post niet gebruikt. Hierdoor krijgt het item dat gemaakt wordt standaard de titel “Auto draft”. Dit wordt ook gebruikt bij het generen van de permalink.

    Na veel zoekwerk heb ik een code voorbeeld gevonden dat ik heb kunnen aanpassen.
    Hierdoor wordt de titel gegenereerd op basis van een custom field en wordt de permalink ook juist aangemaakt.
    Echter, ik probeer dit nu ook voor een 2de content type te doen. Ik probeer een 2de “If”, ik probeer met “Elseif”, … . Ofwel krijg ik een kritische fout op mijn WordPress ofwel wordt bij beide content types gewoon “Auto draft” als titel gebruikt.

    Wie kan mij even helpen?
    #Disclaimer: ik ben geen coder maar een verpleegkundige die met plezier na de uren de website voor zijn woonzorgcentrum bouwt en onderhoudt 😉

    De code die ik gebruik voor het content type “flats” in mijn functions.php van mijn Divi child theme (ik wil graag dezelfde functionaliteit toevoegen voor het content type ‘vacatures’):

    // AUTOMATISCH TITEL VAN EEN PAGINA GENEREREN AAN DE HAND VAN TOOLSET CUSTOM FIELDS – FLATS
    function sha_autogenerate_title( $post_id, $post ){

    if ( ‘flat’ == $post->post_type ) {

    $flatnr = get_post_meta( $post_id, ‘wpcf-flat-nummer’, true );

    $new_title = “Flat” . ” ” . $flatnr;
    $new_title = sanitize_text_field( $new_title );
    $new_slug = sanitize_title( $new_title );

    $args = array(
    ‘ID’ => $post_id,
    ‘post_title’ => $new_title,
    ‘post_name’ => $new_slug
    );
    // unhook this function so it doesn’t loop infinitely
    remove_action(‘save_post’, ‘sha_autogenerate_title’,30,2);

    // update the post, which calls save_post again
    wp_update_post( $args );

    // re-hook this function
    add_action(‘save_post’, ‘sha_autogenerate_title’,30,2);

    }
    }
    add_action( ‘save_post’, ‘sha_autogenerate_title’, 30, 2 );

    Ik heb heel mijn vacature systeem klaar, als nu dit nog wil werken ben ik een heel gelukkig mens 😉
    Alvast dank bij voorbaat!

3 reacties aan het bekijken - 1 tot 3 (van in totaal 3)
  • Hoi,

    De code alleen uitvoeren als post type “flat” of “vacature” is:

    
    // AUTOMATISCH TITEL VAN EEN PAGINA GENEREREN AAN DE HAND VAN TOOLSET CUSTOM FIELDS
    function sha_autogenerate_title( $post_id, $post ){
    	if ( ( 'flat' == $post->post_type ) || ( 'vacature' == $post->post_type ) ) {
    		// Flat
    		if ( 'flat' == $post->post_type ) {
    			$flatnr = get_post_meta( $post_id, 'wpcf-flat-nummer', true );
    
    			$new_title = "Flat" . " " . $flatnr;
    			$new_title = sanitize_text_field( $new_title );
    			$new_slug = sanitize_title( $new_title );
    
    			$args = array(
    			'ID' => $post_id,
    			'post_title' => $new_title,
    			'post_name' => $new_slug
    			);
    			// unhook this function so it doesn't loop infinitely
    			remove_action('save_post', 'sha_autogenerate_title', 30, 2);
    
    			// update the post, which calls save_post again
    			wp_update_post( $args );
    
    			// re-hook this function
    			add_action('save_post', 'sha_autogenerate_title', 30, 2);
    		}
    		// Vacature
    		if ( 'vacature' == $post->post_type ) {
    			$flatnr = get_post_meta( $post_id, 'wpcf-flat-nummer', true );
    
    			$new_title = "Vacature" . " " . $flatnr;
    			$new_title = sanitize_text_field( $new_title );
    			$new_slug = sanitize_title( $new_title );
    
    			$args = array(
    			'ID' => $post_id,
    			'post_title' => $new_title,
    			'post_name' => $new_slug
    			);
    			// unhook this function so it doesn't loop infinitely
    			remove_action('save_post', 'sha_autogenerate_title', 30, 2);
    
    			// update the post, which calls save_post again
    			wp_update_post( $args );
    
    			// re-hook this function
    			add_action('save_post', 'sha_autogenerate_title', 30, 2);
    		}
    	}
    }
    add_action( 'save_post', 'sha_autogenerate_title', 30, 2 );
    

    Ik heb dit verder niet getest, behalve dan op fouten in de code.

    Guido
    ps. als je code op dit forum plaatst, dan vóór en ná je code op de “code” button in de tekst opmaakbalk klikken.

    Thread starter TheHappyFive

    (@thehappyfive)

    Dag Guido,
    Dankjewel voor je reactie en hulp.
    Het is ondertussen gelukt, en ik zie ook wat ik zelf fout deed.
    Weer wat bijgeleerd!

    P.S.: ook bedankt voor jouw p.s. 😉
    grtn,
    Johan.

    Guido

    (@guido07111975)

    Mooi dat het gelukt is en graag gedaan!

    Guido

3 reacties aan het bekijken - 1 tot 3 (van in totaal 3)