I have the following code based on this great template for making custom WordPress widgets:
<?php class DRCC_Feat extends WP_Widget {
function dr_post_select_list() {
$drcc_posts_args = array(
'post_type' => array( 'post', 'page', 'tribe_events' ),
'numberposts' => -1,
'orderby' => 'title',
'order' => 'ASC'
);
$drcc_posts = get_posts( $drcc_posts_args );
$dr_posts_array = array();
foreach( $drcc_posts as $post ) {
$dr_posts_array[$post->ID] = $post->post_title;
}
return $dr_posts_array;
}
protected $widget = array(
'description' => 'Custom widget for my client.',
'do_wrapper' => true,
'view' => false,
'fields' => array(
array(
'name' => 'Post to Feature',
'desc' => 'Enter the IDs of any posts, pages, etc. If more than one, separate with commas.',
'id' => 'dr_feat_ids',
'type' => 'select',
'options' => dr_post_select_list(),
'std' => ''
)
)
);
// some more stuff here, but the error is above and the code works when I make 'options' somethings hard-coded.
} ?>
I am trying to call dr_post_select_list()
in the protected $widget
array to dynamically generate a list of posts, but I get the error Parse error: syntax error, unexpected '(', expecting ')'
in reference to the line with the dr_post_select_list()
function in it. It's as if it doesn't recognize that it's a function.
I've tried the function elsewhere and it works fine. I've tried making the array public and that doesn't change anything. I've tried saving the function output in an array and putting the variable in the array
I get the sense that I'm doing something fundamentally wrong.
tl;dr - method called in array in a class doesn't run (or seem to be recognized as a method).