Идентификатор, изменяющий переменную - PullRequest
0 голосов
/ 15 января 2020

Я работаю над проектом, где я загружаю файл и использую его путь в шорткоде. Сейчас я жестко запрограммировал идентификатор сообщения в своем коде, но я хочу сделать его динамическим c, чтобы новые сообщения автоматически получали правильный шорткод.

<?php
global $wpdb; 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = 5574" ) );
echo do_shortcode ('[sgpx gpx="'.'/wp-content/uploads/' . $thepost->meta_value . '"]'); 
?>

1 Ответ

0 голосов
/ 15 января 2020

Исходя из того, что сказал @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 , способ сделать это с помощью основных функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...