Исходя из того, что сказал @Damocles, вы действительно настраиваетесь на проблемы с вашим текущим путем. Вместо этого есть встроенные функции WordPress, которые абстрагируют базу данных и используют кэширование, которое настоятельно рекомендуется использовать.
// Get the current WordPress post
$the_post = get_post();
//If we have a value (there are cases where this will be empty)
if($the_post){
// Get the value from the post meta table by the current post's ID
$the_post_meta = get_post_meta($the_post->ID, 'YOUR_META_KEY_HERE', true);
// Double-check that we have a value
if($the_post_meta) {
// Finally, echo the shortcode
echo do_shortcode ('[sgpx gpx="'.'/wp-content/uploads/' . $the_post_meta . '"]');
}
}
Однако существует несколько способов получить текущую публикацию get_post()
является наиболее распространенным. Однако, если вы используете пользовательский l oop, вам может потребоваться соответствующая настройка.
Для доступа к мета используйте get_post_meta()
, который включает в себя некоторые оптимизации, включая вместо этого использование кеша базы данных.
Хотя, безусловно, есть исключения, вообще говоря, если вы работаете с WordPress и обнаруживаете, что пишете операторы SQL, почти всегда лучше, безопаснее, быстрее и т. д. c , способ сделать это с помощью основных функций.