Hoi allen.

Voor onze website proberen we momenteel een alfabetische index te bouwen, iets wat een probleem geeft.

Als er een in wordpress een artikel aangemaakt is en een keyword ingevuld, dan gaat er een script lopen van zodra men op update klikt. Dit zorgt ervoor dat de eerste letter van het keyword opgeslagen wordt in de taxonomy "alphabetical letter".

Hiervoor gebruiken we momenteel de plugin advanced custom fields:

<?php
function my_acf_update_letter( $value, $post_id, $field  ) {

    $taxonomy = 'alphabetical_letter';
    $first_letter = strtoupper(substr($value, 0, 1));

    wp_set_post_terms( $post_id, $first_letter, $taxonomy );

    // return
    return $value;

}
add_filter('acf/update_value/name=keyword', 'my_acf_update_letter', 10, 3);
?>



Het probleem is nu dat we met heel veel posts in onze database zitten die we in 1 keer willen updaten. in de afgelopen dagen heb ik al vanalles geprobeerd met mijn beperkte php kennis maar ik kom er maar niet aan uit... kunnen julle me helpen ?

Dit is wat we hebben tot nu toe maar helaas doet deze het niet...

<?php
function kia_run_once(){
 
    if ( false === get_transient( 'kia_run_once' ) ) {
 
        $taxonomy = 'alphabetical_letter';
        $alphabet = array();
 
        $posts = get_posts(array('numberposts' => -1) );
 
        foreach( $posts as $p ) :
        //set term as first letter of post title, lower case
	      $first_letter = strtoupper(substr($value, 0, 1));

        wp_set_post_terms( $p->ID, $first_letter, $taxonomy );
	  
        endforeach;
 
        set_transient( 'kia_run_once', 'true' );
 
    }
 
}
add_action('init','kia_run_once');
?>


Reageren